<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>

<link href='https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; --title-bar-height:20px; }
.mac-os-11 { --title-bar-height:28px; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5 { white-space: pre-wrap; }
body { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
.typora-export .task-list-item input { pointer-events: none; }
@media screen and (max-width: 500px) {
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; image-orientation: from-image; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px; }
thead, tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-fences-adv-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
svg { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li blockquote { margin: 1rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
  #write { margin-top: 0px; border-color: transparent !important; padding-top: 0px !important; padding-bottom: 0px !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  .typora-export #write { break-after: avoid; }
  .typora-export #write::after { height: 0px; }
  .is-mac table { break-inside: avoid; }
  #write > p:nth-child(1) { margin-top: 0px; }
  .typora-export-show-outline .typora-export-sidebar { display: none; }
  figure { overflow-x: visible; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
.MathJax_ref { fill: currentcolor; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.reversefootnote { font-family: ui-monospace, sans-serif; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
.md-expand mark .md-meta { opacity: 0.3 !important; }
mark .md-meta { color: rgb(0, 0, 0); }
@media print {
  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }
}
.md-diagram-panel .messageText { stroke: none !important; }
.md-diagram-panel .start-state { fill: var(--node-fill); }
.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }
.md-fences.md-fences-math { font-size: 1em; }
.md-fences-advanced:not(.md-focus) { padding: 0px; white-space: nowrap; border: 0px; }
.md-fences-advanced:not(.md-focus) { background: inherit; }
.typora-export-show-outline .typora-export-content { max-width: 1440px; margin: auto; display: flex; flex-direction: row; }
.typora-export-sidebar { width: 300px; font-size: 0.8rem; margin-top: 80px; margin-right: 18px; }
.typora-export-show-outline #write { --webkit-flex:2; flex: 2 1 0%; }
.typora-export-sidebar .outline-content { position: fixed; top: 0px; max-height: 100%; overflow: hidden auto; padding-bottom: 30px; padding-top: 60px; width: 300px; }
@media screen and (max-width: 1024px) {
  .typora-export-sidebar, .typora-export-sidebar .outline-content { width: 240px; }
}
@media screen and (max-width: 800px) {
  .typora-export-sidebar { display: none; }
}
.outline-content li, .outline-content ul { margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; list-style: none; overflow-wrap: anywhere; }
.outline-content ul { margin-top: 0px; margin-bottom: 0px; }
.outline-content strong { font-weight: 400; }
.outline-expander { width: 1rem; height: 1.42857rem; position: relative; display: table-cell; vertical-align: middle; cursor: pointer; padding-left: 4px; }
.outline-expander::before { content: ""; position: relative; font-family: Ionicons; display: inline-block; font-size: 8px; vertical-align: middle; }
.outline-item { padding-top: 3px; padding-bottom: 3px; cursor: pointer; }
.outline-expander:hover::before { content: ""; }
.outline-h1 > .outline-item { padding-left: 0px; }
.outline-h2 > .outline-item { padding-left: 1em; }
.outline-h3 > .outline-item { padding-left: 2em; }
.outline-h4 > .outline-item { padding-left: 3em; }
.outline-h5 > .outline-item { padding-left: 4em; }
.outline-h6 > .outline-item { padding-left: 5em; }
.outline-label { cursor: pointer; display: table-cell; vertical-align: middle; text-decoration: none; color: inherit; }
.outline-label:hover { text-decoration: underline; }
.outline-item:hover { border-color: rgb(245, 245, 245); background-color: var(--item-hover-bg-color); }
.outline-item:hover { margin-left: -28px; margin-right: -28px; border-left: 28px solid transparent; border-right: 28px solid transparent; }
.outline-item-single .outline-expander::before, .outline-item-single .outline-expander:hover::before { display: none; }
.outline-item-open > .outline-item > .outline-expander::before { content: ""; }
.outline-children { display: none; }
.info-panel-tab-wrapper { display: none; }
.outline-item-open > .outline-children { display: block; }
.typora-export .outline-item { padding-top: 1px; padding-bottom: 1px; }
.typora-export .outline-item:hover { margin-right: -8px; border-right: 8px solid transparent; }
.typora-export .outline-expander::before { content: "+"; font-family: inherit; top: -1px; }
.typora-export .outline-expander:hover::before, .typora-export .outline-item-open > .outline-item > .outline-expander::before { content: "−"; }
.typora-export-collapse-outline .outline-children { display: none; }
.typora-export-collapse-outline .outline-item-open > .outline-children, .typora-export-no-collapse-outline .outline-children { display: block; }
.typora-export-no-collapse-outline .outline-expander::before { content: "" !important; }
.typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; }
.md-inline-math-container mjx-container { zoom: 0.95; }
mjx-container { break-inside: avoid; }


.CodeMirror { height: auto; }
.CodeMirror.cm-s-inner { background: inherit; }
.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: 700; }
.cm-del { text-decoration: line-through; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-error { color: red; }
.cm-invalidchar { color: red; }
.cm-constant { color: rgb(38, 139, 210); }
.cm-defined { color: rgb(181, 137, 0); }
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
.cm-s-inner .CodeMirror-activeline-background { background: inherit; }
.CodeMirror { position: relative; overflow: hidden; }
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
.CodeMirror-sizer { position: relative; }
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; outline: 0px; }
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: auto hidden; }
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 10px; z-index: 3; overflow-y: hidden; }
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
.CodeMirror-lines { cursor: text; }
.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
.CodeMirror-linebackground { position: absolute; inset: 0px; z-index: 0; }
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
.cm-searching { background: rgba(255, 255, 0, 0.4); }
span.cm-underlined { text-decoration: underline; }
span.cm-strikethrough { text-decoration: line-through; }
.cm-tw-syntaxerror { color: rgb(255, 255, 255); background-color: rgb(153, 0, 0); }
.cm-tw-deleted { text-decoration: line-through; }
.cm-tw-header5 { font-weight: 700; }
.cm-tw-listitem:first-child { padding-left: 10px; }
.cm-tw-box { border-style: solid; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-color: inherit; border-top-width: 0px !important; }
.cm-tw-underline { text-decoration: underline; }
@media print {
  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
}


:root {
    --side-bar-bg-color: #fafafa;
    --control-text-color: #777;
}

@include-when-export url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);

/* open-sans-regular - latin-ext_latin */
  /* open-sans-italic - latin-ext_latin */
    /* open-sans-700 - latin-ext_latin */
    /* open-sans-700italic - latin-ext_latin */
  html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
}

body {
    font-family: "Open Sans","Clear Sans", "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
    color: rgb(51, 51, 51);
    line-height: 1.6;
}

#write {
    max-width: 860px;
  	margin: 0 auto;
  	padding: 30px;
    padding-bottom: 100px;
}

@media only screen and (min-width: 1400px) {
	#write {
		max-width: 1024px;
	}
}

@media only screen and (min-width: 1800px) {
	#write {
		max-width: 1200px;
	}
}

#write > ul:first-child,
#write > ol:first-child{
    margin-top: 30px;
}

a {
    color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    position: relative;
    margin-top: 1rem;
    margin-bottom: 1rem;
    font-weight: bold;
    line-height: 1.4;
    cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
    text-decoration: none;
}
h1 tt,
h1 code {
    font-size: inherit;
}
h2 tt,
h2 code {
    font-size: inherit;
}
h3 tt,
h3 code {
    font-size: inherit;
}
h4 tt,
h4 code {
    font-size: inherit;
}
h5 tt,
h5 code {
    font-size: inherit;
}
h6 tt,
h6 code {
    font-size: inherit;
}
h1 {
    font-size: 2.25em;
    line-height: 1.2;
    border-bottom: 1px solid #eee;
}
h2 {
    font-size: 1.75em;
    line-height: 1.225;
    border-bottom: 1px solid #eee;
}

/*@media print {
    .typora-export h1,
    .typora-export h2 {
        border-bottom: none;
        padding-bottom: initial;
    }

    .typora-export h1::after,
    .typora-export h2::after {
        content: "";
        display: block;
        height: 100px;
        margin-top: -96px;
        border-top: 1px solid #eee;
    }
}*/

h3 {
    font-size: 1.5em;
    line-height: 1.43;
}
h4 {
    font-size: 1.25em;
}
h5 {
    font-size: 1em;
}
h6 {
   font-size: 1em;
    color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
    margin: 0.8em 0;
}
li>ol,
li>ul {
    margin: 0 0;
}
hr {
    height: 2px;
    padding: 0;
    margin: 16px 0;
    background-color: #e7e7e7;
    border: 0 none;
    overflow: hidden;
    box-sizing: content-box;
}

li p.first {
    display: inline-block;
}
ul,
ol {
    padding-left: 30px;
}
ul:first-child,
ol:first-child {
    margin-top: 0;
}
ul:last-child,
ol:last-child {
    margin-bottom: 0;
}
blockquote {
    border-left: 4px solid #dfe2e5;
    padding: 0 15px;
    color: #777777;
}
blockquote blockquote {
    padding-right: 0;
}
table {
    padding: 0;
    word-break: initial;
}
table tr {
    border: 1px solid #dfe2e5;
    margin: 0;
    padding: 0;
}
table tr:nth-child(2n),
thead {
    background-color: #f8f8f8;
}
table th {
    font-weight: bold;
    border: 1px solid #dfe2e5;
    border-bottom: 0;
    margin: 0;
    padding: 6px 13px;
}
table td {
    border: 1px solid #dfe2e5;
    margin: 0;
    padding: 6px 13px;
}
table th:first-child,
table td:first-child {
    margin-top: 0;
}
table th:last-child,
table td:last-child {
    margin-bottom: 0;
}

.CodeMirror-lines {
    padding-left: 4px;
}

.code-tooltip {
    box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
    border-top: 1px solid #eef2f2;
}

.md-fences,
code,
tt {
    border: 1px solid #e7eaed;
    background-color: #f8f8f8;
    border-radius: 3px;
    padding: 0;
    padding: 2px 4px 0px 4px;
    font-size: 0.9em;
}

code {
    background-color: #f3f4f4;
    padding: 0 2px 0 2px;
}

.md-fences {
    margin-bottom: 15px;
    margin-top: 15px;
    padding-top: 8px;
    padding-bottom: 6px;
}


.md-task-list-item > input {
  margin-left: -1.3em;
}

@media print {
    html {
        font-size: 13px;
    }
    pre {
        page-break-inside: avoid;
        word-wrap: break-word;
    }
}

.md-fences {
	background-color: #f8f8f8;
}
#write pre.md-meta-block {
	padding: 1rem;
    font-size: 85%;
    line-height: 1.45;
    background-color: #f7f7f7;
    border: 0;
    border-radius: 3px;
    color: #777777;
    margin-top: 0 !important;
}

.mathjax-block>.code-tooltip {
	bottom: .375rem;
}

.md-mathjax-midline {
    background: #fafafa;
}

#write>h3.md-focus:before{
	left: -1.5625rem;
	top: .375rem;
}
#write>h4.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h5.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h6.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
.md-image>.md-meta {
    /*border: 1px solid #ddd;*/
    border-radius: 3px;
    padding: 2px 0px 0px 4px;
    font-size: 0.9em;
    color: inherit;
}

.md-tag {
    color: #a7a7a7;
    opacity: 1;
}

.md-toc { 
    margin-top:20px;
    padding-bottom:20px;
}

.sidebar-tabs {
    border-bottom: none;
}

#typora-quick-open {
    border: 1px solid #ddd;
    background-color: #f8f8f8;
}

#typora-quick-open-item {
    background-color: #FAFAFA;
    border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
    border-style: solid;
    border-width: 1px;
}

/** focus mode */
.on-focus-mode blockquote {
    border-left-color: rgba(85, 85, 85, 0.12);
}

header, .context-menu, .megamenu-content, footer{
    font-family: "Segoe UI", "Arial", sans-serif;
}

.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
    visibility: visible;
}

.mac-seamless-mode #typora-sidebar {
    background-color: #fafafa;
    background-color: var(--side-bar-bg-color);
}

.md-lang {
    color: #b4654d;
}

/*.html-for-mac {
    --item-hover-bg-color: #E6F0FE;
}*/

#md-notification .btn {
    border: 0;
}

.dropdown-menu .divider {
    border-color: #e5e5e5;
    opacity: 0.4;
}

.ty-preferences .window-content {
    background-color: #fafafa;
}

.ty-preferences .nav-group-item.active {
    color: white;
    background: #999;
}

.menu-item-container a.menu-style-btn {
    background-color: #f5f8fa;
    background-image: linear-gradient( 180deg , hsla(0, 0%, 100%, 0.8), hsla(0, 0%, 100%, 0)); 
}



</style><title>可视化大屏系统开发及使用手册</title>
</head>
<body class='typora-export os-windows typora-export-show-outline typora-export-collapse-outline'><div class='typora-export-content'>
<div class="typora-export-sidebar"><div class="outline-content"><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#0-前言说明">0 前言说明</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#01-编译说明">0.1 编译说明</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#02-版本说明">0.2 版本说明</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#03-相关站点">0.3 相关站点</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#04-功能特点">0.4 功能特点</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1-操作说明">1 操作说明</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#11-使用方法">1.1 使用方法</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#111-启动窗体">1.1.1 启动窗体</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1111-大屏系统">1.1.1.1 大屏系统</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1112-模块演示">1.1.1.2 模块演示</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1113-控件演示">1.1.1.3 控件演示</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#112-系统菜单">1.1.2 系统菜单</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#113-模块菜单">1.1.3 模块菜单</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#114-布局切换">1.1.4 布局切换</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#115-新建布局">1.1.5 新建布局</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#116-全局换肤">1.1.6 全局换肤</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#117-模块拖动">1.1.7 模块拖动</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#118-调整间距">1.1.8 调整间距</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#12-系统设置">1.2 系统设置</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#121-基本设置">1.2.1 基本设置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#122-视频设置">1.2.2 视频设置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#123-采集间隔设置">1.2.3 采集间隔设置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#124-数据库设置">1.2.4 数据库设置</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#13-工作模式">1.3 工作模式</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#131-模拟数据">1.3.1 模拟数据</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#132-数据库采集">1.3.2 数据库采集</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#133-串口采集">1.3.3 串口采集</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#134-网络采集">1.3.4 网络采集</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#135-网络请求">1.3.5 网络请求</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#136-请求格式">1.3.6 请求格式</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1361-请求数据">1.3.6.1 请求数据</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1362-返回数据">1.3.6.2 返回数据</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#1363-整体流程">1.3.6.3 整体流程</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#137-拓展构想">1.3.7 拓展构想</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#14-其他说明">1.4 其他说明</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#2-数据库说明">2 数据库说明</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#21-产量汇总模块">2.1 产量汇总模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#211-模具产量">2.1.1 模具产量</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#212-每月模具产量趋势图">2.1.2 每月模具产量趋势图</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#213-零件产量">2.1.3 零件产量</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#214-每月零件产量趋势图">2.1.4 每月零件产量趋势图</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#22-当月计划模块">2.2 当月计划模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#221-模具达成率">2.2.1 模具达成率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#222-零件达成率">2.2.2 零件达成率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#223-零件数">2.2.3 零件数</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#224-每日工序达成数">2.2.4 每日工序达成数</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#23-设备监控模块">2.3 设备监控模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#231-设备运行状态">2.3.1 设备运行状态</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#232-稼动率">2.3.2 稼动率</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#24-模具进度模块">2.4 模具进度模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#241-模具进度">2.4.1 模具进度</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#242-模具状态统计">2.4.2 模具状态统计</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#243-加工中模具数量">2.4.3 加工中模具数量</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#25-负荷分布模块">2.5 负荷分布模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#251-工序计划负荷">2.5.1 工序计划负荷</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#252-当日负荷">2.5.2 当日负荷</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#253-负荷百分比">2.5.3 负荷百分比</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#26-送检合格模块">2.6 送检合格模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#261-钢件合格率">2.6.1 钢件合格率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#262-电极合格率">2.6.2 电极合格率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#263-当天合格率">2.6.3 当天合格率</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#264-模具零件合格率">2.6.4 模具零件合格率</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#27-品质统计模块">2.7 品质统计模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#271-品质占比">2.7.1 品质占比 </a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#272-班组合格率">2.7.2 班组合格率 </a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#273-每日合格率统计">2.7.3 每日合格率统计</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#28-物料管理模块">2.8 物料管理模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#281-库存占比">2.8.1 库存占比</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#282-主要零件库存">2.8.2 主要零件库存</a></div><ul class="outline-children"></ul></li></ul></li></ul></li><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#3-配置参数说明">3 配置参数说明</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#31-基本配置1">3.1 基本配置1</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#32-基本设置2">3.2 基本设置2</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#33-视频设置">3.3 视频设置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#34-颜色配置1">3.4 颜色配置1</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#35-颜色配置2">3.5 颜色配置2</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#36-颜色配置3">3.6 颜色配置3</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#37-字体配置">3.7 字体配置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#38-尺寸配置">3.8 尺寸配置</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#39-采集速度">3.9 采集速度</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#310-数据库配置">3.10 数据库配置</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#4-程序框架说明">4 程序框架说明</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#41-整体代码结构">4.1 整体代码结构</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#42-主模块说明">4.2 主模块说明</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#43-子模块说明">4.3 子模块说明</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#44-辅助处理">4.4 辅助处理</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#441-数据库表映射">4.4.1 数据库表映射</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#442-通用辅助函数类">4.4.2 通用辅助函数类</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#443-初始化及辅助">4.4.3 初始化及辅助</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#444-自定义控件">4.4.4 自定义控件</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#45-内核模块">4.5 内核模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#451-通用自定义控件">4.5.1 通用自定义控件</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#452-图表组件内核">4.5.2 图表组件内核</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#453-数据库应用内核">4.5.3 数据库应用内核</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#454-大屏地图内核">4.5.4 大屏地图内核</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#455-视频监控内核">4.5.5 视频监控内核</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#4551-视频播放组件">4.5.5.1 视频播放组件</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#4552-视频基类组件">4.5.5.2 视频基类组件</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#4553-视频解码组件">4.5.5.3 视频解码组件</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#4554-视频绘制组件">4.5.5.4 视频绘制组件</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#456-通用浏览器内核">4.5.6 通用浏览器内核</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#46-界面模块">4.6 界面模块</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#461-大屏控件演示">4.6.1 大屏控件演示</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#462-大屏模块演示">4.6.2 大屏模块演示</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#463-主界面模块">4.6.3 主界面模块</a></div><ul class="outline-children"></ul></li></ul></li></ul></li><li class="outline-item-wrapper outline-h2"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5-效果图">5 效果图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#51-布局方案">5.1 布局方案</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#511-自定义布局1">5.1.1 自定义布局1</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#512-自定义布局2">5.1.2 自定义布局2</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#513-自定义布局3">5.1.3 自定义布局3</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#514-自定义布局4">5.1.4 自定义布局4</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#515-自定义布局5">5.1.5 自定义布局5</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#516-自定义布局6">5.1.6 自定义布局6</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#517-自定义布局7">5.1.7 自定义布局7</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#518-自定义布局8">5.1.8 自定义布局8</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#52-配色方案">5.2 配色方案</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#521-紫色风格">5.2.1 紫色风格</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#522-蓝色风格">5.2.2 蓝色风格</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#523-深蓝风格">5.2.3 深蓝风格</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#524-黑色风格">5.2.4 黑色风格</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#53-模块效果图">5.3 模块效果图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#531-产量汇总">5.3.1 产量汇总</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#532-当月计划">5.3.2 当月计划</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#533-设备监控">5.3.3 设备监控</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#534-模具进度">5.3.4 模具进度</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#535-负荷分布">5.3.5 负荷分布</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#536-送检合格">5.3.6 送检合格</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#537-品质管理">5.3.7 品质管理</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#538-物料管理">5.3.8 物料管理</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#539-视频监控">5.3.9 视频监控</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5310-大屏地图">5.3.10 大屏地图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#53101闪烁效果">5.3.10.1闪烁效果</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#53102-迁徙效果">5.3.10.2 迁徙效果</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#53103-世界地图">5.3.10.3 世界地图</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h5 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#53104-区域地图">5.3.10.4 区域地图</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5311-系统设置">5.3.11 系统设置</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#54-控件效果图">5.4 控件效果图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#541-标准曲线">5.4.1 标准曲线</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#542-曲线面积">5.4.2 曲线面积</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#543-模拟曲线">5.4.3 模拟曲线</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#544-标准柱状">5.4.4 标准柱状</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#545-柱状堆积">5.4.5 柱状堆积</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#546-柱状分组">5.4.6 柱状分组</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#547-横向柱状">5.4.7 横向柱状</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#548-横向分组">5.4.8 横向分组</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#549-数据曲线">5.4.9 数据曲线</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5410-平滑曲线">5.4.10 平滑曲线</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5411-多坐标轴">5.4.11 多坐标轴</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#5412-多曲线图">5.4.12 多曲线图</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#55-数据库效果图">5.5 数据库效果图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#551-数据库-sqlite">5.5.1 数据库-sqlite</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#552-数据库-mysql">5.5.2 数据库-mysql</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#553-数据库-sqlserver">5.5.3 数据库-sqlserver</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#554-数据库-postgresql">5.5.4 数据库-postgresql</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#555-数据库-oracle">5.5.5 数据库-oracle</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#556-数据库-kingbase">5.5.6 数据库-kingbase</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#557-数据库-远程访问">5.5.7 数据库-远程访问</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#558-数据库-odbc">5.5.8 数据库-odbc</a></div><ul class="outline-children"></ul></li></ul></li><li class="outline-item-wrapper outline-h3"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#56-各系统运行图">5.6 各系统运行图</a></div><ul class="outline-children"><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#561-windows-mingw">5.6.1 windows-mingw</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#562-windows-msvc">5.6.2 windows-msvc</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#563-linux-ubuntu">5.6.3 linux-ubuntu</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#564-linux-uos">5.6.4 linux-uos</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#565-linux-kylin">5.6.5 linux-kylin</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#566-linux-neokylin">5.6.6 linux-neokylin</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#567-linux-fedoar">5.6.7 linux-fedoar</a></div><ul class="outline-children"></ul></li><li class="outline-item-wrapper outline-h4 outline-item-single"><div class="outline-item"><span class="outline-expander"></span><a class="outline-label" href="#568-unix-mac">5.6.8 unix-mac</a></div><ul class="outline-children"></ul></li></ul></li></ul></li></div></div><div id='write'  class=''><h2 id='0-前言说明'><span>0 前言说明</span></h2><h3 id='01-编译说明'><span>0.1 编译说明</span></h3><ol start='' ><li><p><span>编译后可执行文件在和源码文件夹同级目录的bin文件夹下，配置文件bigscreen.ini文件在可执行文件所在目录下的config文件夹下，数据库文件在可执行文件所在目录下的db文件夹下。</span></p></li><li><p><span>编译后记得将源码下的file目录下（切记是file目录下而不是file目录）的所有文件复制到可执行文件同一目录。</span></p></li><li><p><span>大屏中用到了视频监控模块，所以还需要拷贝ffmpeg的动态库文件到可执行文件同一目录，编译成功后记得将dll_ffmpeg4（64位的构建套件对应的是dll_ffmpeg4_64）对应目录下的库复制到可执行文件同一目录。</span></p></li><li><p><span>dll+lib 链接: </span><a href='https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA' target='_blank' class='url'>https://pan.baidu.com/s/13LDRu6mXC6gaADtrGprNVA</a><span> 提取码: ujm7。</span></p></li><li><p><span>如果程序异常结束并提示 miniblink.dll 文件不存在请先拷贝，你还需要在dll+lib下载地址的地方找到 dll_miniblink.zip 下载并解压出来拷贝文件到可执行文件目录。一般这个是因为你用的mingw编译器，win+qt5.6以上+mingw编译器，没有浏览器控件，采用的miniblink第三方浏览器控件。</span></p></li><li><p><span>本系统支持ffmpeg2/3/4/5/6所有版本，默认是ffmpeg4，如果要支持XP需要用ffmpeg2/3。如果是在linux/mac系统上编译记得查看core_videoffmpeg/下面的 linux系统和mac系统上库的用法.txt/编译阶段linux系统ffmpeg库放置位置.jpg/运行阶段linux系统ffmpeg库放置位置.jpg。</span></p></li><li><p><span>当然你也可以选择不启用视频监控模块，只需要将pro中的videoffmpeg改成videoffmpeg1即可。</span></p></li><li><p><span>目录下的bigscreen.sql为数据库脚本，可以在系统设置中单击初始化数据来执行。bigscreen_mysql.sql脚本为Navicat工具对应的导入脚本。</span></p></li><li><p><span>如果发现地图打不开，请先确认file目录下的所有文件有没有拷贝过去，还有就是将MapBaiDu::Instance()-&gt;setSaveFile(false); 改成true;</span></p></li><li><p><span>如果是用vs+qt可能报错 error LNK2026: 模块对于 SAFESEH 映像是不安全的。</span></p></li></ol><ul><li><p><span>第一步：打开该项目的“属性页”对话框。</span></p></li><li><p><span>第二步：单击“链接器”文件夹。</span></p></li><li><p><span>第三步：单击“命令行”属性页。</span></p></li><li><p><span>第四步：将 /SAFESEH:NO 键入“附加选项”框中，然后点击应用。</span></p></li></ul><h3 id='02-版本说明'><span>0.2 版本说明</span></h3><p><strong><span>V20220718</span></strong></p><ol start='' ><li><p><span>中间地图模块增加隐藏地图功能，只保留最顶部的标题栏。</span></p></li><li><p><span>增加表格看板模块，通用的表格窗体模块，指定表名、列名、列宽即可，自动刷新对应表数据。可以作为ERP库存电子看板使用。</span></p></li><li><p><span>增加自动应用新的视频地址。</span></p></li><li><p><span>修复监控模块布局切换后多次触发显示和隐藏的BUG，可能导致视频画面重叠以及暂停继续播放失效。</span></p></li><li><p>&nbsp;</p></li></ol><p><strong><span>V20220417</span></strong></p><ol start='' ><li><p><span>设备状态监测增加进度条控件，每个设备都有一个进度条对应完成进度。</span></p></li><li><p><span>设备状态数据库增加字段progress存储进度，flicker控制是否闪烁，1表示闪烁。</span></p></li><li><p><span>增加大量的代码注释。</span></p></li></ol><p><strong><span>V20211015</span></strong></p><ol start='' ><li><p><span>修正停靠窗体鼠标右键弹出菜单复选框样式、右键菜单子菜单三角形图标样式。</span></p></li><li><p><span>修正全局复选框样式，比如用户管理中勾选用户权限。</span></p></li><li><p><span>顶部banner改成透明度20%，这样自适应多种背景颜色风格。</span></p></li><li><p><span>图片文件夹将image改成了image_bigscreen，以便和其他系统区分。</span></p></li><li><p><span>布局文件夹将layout改成了layout_bigscreen，以便和其他系统区分。</span></p></li><li><p><span>默认布局文件夹是1920x1080分辨率。用户可以自己在不同分辨率下调整好布局生成布局文件，然后拷贝布局文件夹进行备份。</span></p></li><li><p><span>将其他几种分辨率布局文件夹删除，去掉了这种机制，后期采用不同用户对应不同布局文件夹的形式。</span></p></li><li><p><span>将相关文档和布局文件移动到源码下的doc目录。</span></p></li><li><p><span>系统设置新增全屏模式参数，默认全屏，不全屏则采用最大化显示，有些系统为了不遮挡任务栏需要最大化显示，也方便截图。</span></p></li><li><p><span>增加悬浮窗体分隔条样式，限定宽度和颜色等。</span></p></li></ol><p><strong><span>V20210323</span></strong></p><ol start='' ><li><p><span>编写开发和使用说明书。</span></p></li><li><p><span>系统设置增加视频拉伸、视频循环播放等配置参数。</span></p></li><li><p><span>增加多屏幕支持，自动识别多个屏幕。</span></p></li><li><p><span>新增2K分辨率布局文件夹。</span></p></li><li><p><span>增加示例自定义添加多个窗体。</span></p></li><li><p><span>重新设计配置参数界面，重新拆分配置参数分组，使得更清晰明了。</span></p></li><li><p><span>新增停靠窗体默认尺寸占比，这样在没有布局文件以及新建布局文件的时候自动按照这个尺寸设置停靠窗体的位置，之前没有布局文件默认是挤在一块的。</span></p></li><li><p><span>配置文件密码改成密文存储。</span></p></li></ol><h3 id='03-相关站点'><span>0.3 相关站点</span></h3><ol start='' ><li><p><span>国内站点：</span><a href='https://gitee.com/feiyangqingyun'><span>https://gitee.com/feiyangqingyun</span></a></p></li><li><p><span>国际站点：</span><a href='https://github.com/feiyangqingyun'><span>https://github.com/feiyangqingyun</span></a></p></li><li><p><span>个人主页：</span><a href='https://blog.csdn.net/feiyangqingyun'><span>https://blog.csdn.net/feiyangqingyun</span></a></p></li><li><p><span>知乎主页：</span><a href='https://www.zhihu.com/people/feiyangqingyun'><span>https://www.zhihu.com/people/feiyangqingyun</span></a></p></li><li><p><span>产品主页：</span><a href='https://blog.csdn.net/feiyangqingyun/article/details/97565652'><span>https://blog.csdn.net/feiyangqingyun/article/details/97565652</span></a></p></li><li><p><span>在线文档：</span><a href='https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/'><span>https://feiyangqingyun.gitee.io/qwidgetdemo/bigscreen/</span></a></p></li><li><p><span>体验地址：</span><a href='https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g'><span>https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g</span></a><span> 提取码：01jf 文件名：bin_bigscreen.zip。</span></p></li><li><p><span>文章导航：</span><a href='https://qtchina.blog.csdn.net/article/details/121327452'><span>https://qtchina.blog.csdn.net/article/details/121327452</span></a></p></li></ol><h3 id='04-功能特点'><span>0.4 功能特点</span></h3><ol start='' ><li><p><span>采用分层设计，整体总共分三级界面，一级界面是整体布局，二级界面是单个功能模块，三级界面是单个控件。</span></p></li><li><p><span>子控件包括饼图、圆环图、曲线图、柱状图、柱状分组图、横向柱状图、横向柱状分组图、合格率控件、百分比控件、进度控件、设备状态面板、表格数据、地图控件、视频控件等。</span></p></li><li><p><span>二级界面可以自由拖动悬浮，支持最小化隐藏、最大化关闭、响应双击自定义标题栏。</span></p></li><li><p><span>数据源支持模拟数据（默认）、数据库采集、串口通信（需定制）、网络通信（需定制）、网络请求等，可自由设定每个子界面的采集间隔即数据刷新频率。</span></p></li><li><p><span>采用纯QWidget编写，亲测Qt4.6到Qt6.2任意版本，理论上支持后续其他Qt版本。</span></p></li><li><p><span>超强跨平台，亲测windows、linux、mac、国产uos、国产银河麒麟kylin等系统，效果完美，同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等。</span></p></li><li><p><span>同时集成了自定义控件、qchart饼图、echart地图等功能。</span></p></li><li><p><span>内置多套配色风格样式（紫色、蓝色、深蓝、黑色），默认紫色，自适应任意分辨率。</span></p></li><li><p><span>可设置系统标题、目标分辨率、布局方案，启动立即应用。</span></p></li><li><p><span>可设置主背景颜色、面板颜色、十字线游标颜色等各种颜色。</span></p></li><li><p><span>可设置多条曲线不同颜色，没有设置颜色的情况下内置多套精美颜色随机应用。</span></p></li><li><p><span>可设置标题栏背景颜色、文字颜色。</span></p></li><li><p><span>可设置曲线图表背景颜色、文字颜色、网格颜色。</span></p></li><li><p><span>可设置正常颜色、警戒颜色、报警颜色、禁用颜色、百分比进度颜色。</span></p></li><li><p><span>可分别设置各种字体大小，比如全局字体、软件名称、标题栏、子标题栏、加粗标签等。</span></p></li><li><p><span>可设置标题栏高度、表头高度、行高度。</span></p></li><li><p><span>曲线支持游标、定位线、悬停高亮数据点、悬停显示值。</span></p></li><li><p><span>柱状图支持顶部（可设置顶端、上部、中间、底部）显示数据，全部自适应计算位置。</span></p></li><li><p><span>支持平滑曲线，内置多种平滑曲线算法，还支持面积图平滑。</span></p></li><li><p><span>面积图填充颜色可选多种规则比如单色透明度填充、透明度渐变填充等。</span></p></li><li><p><span>数据库支持sqlite、mysql、postgresql、oracle、国产人大金仓等数据库。</span></p></li><li><p><span>主界面直接鼠标右键切换布局、配色方案、关闭开启某个二级窗体。</span></p></li><li><p><span>自动记忆所有子窗口的大小和位置，下次启动立即应用。</span></p></li><li><p><span>动态加载布局方案菜单，可以动态新建布局、恢复布局、保存布局、另存布局等，用户可以制造任意布局。</span></p></li><li><p><span>二级窗体，双击从主窗体分离出来浮动，可以自由调整大小。再次双击标题栏最大化，再次双击还原。</span></p></li><li><p><span>子模块也可以全屏显示作为一个大屏，这样就可以一个大屏拓展出多个子大屏，放大查看子模块的数据详情，适用多屏展示。</span></p></li><li><p><span>每个模块都可以自定义采集速度，如果是数据库采集会自动排队处理，后期还可以拓展每个子模块都独立的数据库采集。</span></p></li><li><p><span>提供系统设置模块进行整体的配置参数设置，效果立即应用。</span></p></li><li><p><span>提供精美炫酷的大屏地图模块，包括静态图片、闪烁效果、迁徙效果、世界地图、区域地图等，可指定点的经纬度坐标，识别单击响应，可以做地图跳转等，每个点都可以不同的颜色和提示信息。</span></p></li><li><p><span>除了提供大屏系统外，还将每个模块都做了独立的模块示例界面，每个模块都可以独立学习使用，里面用到的控件也单独做了控件示例界面，方便学习每个控件如何使用。</span></p></li><li><p><span>非常详细的开发和使用手册，其中包括数据库说明、模块对照图、控件对照图、项目结构、代码说明（精确到每个类）、演示demo、使用方法等。</span></p></li></ol><h2 id='1-操作说明'><span>1 操作说明</span></h2><h3 id='11-使用方法'><span>1.1 使用方法</span></h3><p><span>　　系统支持多种数据源，比如数据库采集、http请求、串口通信、网络通信、模拟数据等，为了简化测试过程，默认内置采用的是模拟数据。</span></p><h4 id='111-启动窗体'><span>1.1.1 启动窗体</span></h4><p><span>　　系统内置了多种启动窗体，默认大屏系统，可以通过鼠标右键菜单进入系统设置，启动窗体下拉框选择进行切换，切换后会自动重启应用，还可选择控件演示、模块演示，在控件演示和模块演示窗体中，左侧是对应子窗体导航，会自动记住最后选中的子界面索引。</span>
<span> </span><img src="snap/1-1-1-1.jpg" referrerpolicy="no-referrer"></p><h5 id='1111-大屏系统'><span>1.1.1.1 大屏系统</span></h5><p><span> </span><img src="snap/1-1-1-2.jpg" referrerpolicy="no-referrer"></p><h5 id='1112-模块演示'><span>1.1.1.2 模块演示</span></h5><p><span> </span><img src="snap/1-1-1-3.jpg" referrerpolicy="no-referrer"></p><h5 id='1113-控件演示'><span>1.1.1.3 控件演示</span></h5><p><span> </span><img src="snap/1-1-1-4.jpg" referrerpolicy="no-referrer"></p><h4 id='112-系统菜单'><span>1.1.2 系统菜单</span></h4><p><span> </span><img src="snap/1-1-2-1.jpg" referrerpolicy="no-referrer">
<span> </span><img src="snap/1-1-2-2.jpg" referrerpolicy="no-referrer"></p><p><span>在大屏的顶部中间标题栏或者子模块以外的标题栏，鼠标右键弹出的是系统的菜单，包括布局切换和样式切换等。</span></p><h4 id='113-模块菜单'><span>1.1.3 模块菜单</span></h4><p><span> </span><img src="snap/1-1-3-1.jpg" referrerpolicy="no-referrer">
<span> </span><img src="snap/1-1-3-2.jpg" referrerpolicy="no-referrer"></p><p><span>在模块的标题栏，鼠标右键弹出的是模块可视化的菜单，这个是Qt内置生成的，加载了多少个子模块就会生成多少个菜单项，可以对每个模块进行显示隐藏切换。</span></p><h4 id='114-布局切换'><span>1.1.4 布局切换</span></h4><p><span>在弹出的系统菜单选择布局方案，在弹出的二级菜单选择默认已经设置好的布局方案，直接切换即可。</span></p><h4 id='115-新建布局'><span>1.1.5 新建布局</span></h4><p><span>在弹出的系统菜单选择新建布局，在弹出的框中输入布局名称，确认后，自由拖动调整模块位置，打开模块、隐藏模块，之后单击保存布局即可。</span></p><h4 id='116-全局换肤'><span>1.1.6 全局换肤</span></h4><p><span>在弹出的系统菜单选择配色方案，在弹出的二级菜单选择对应的配色方案，默认有四种：紫色风格、蓝色风格、深蓝风格、黑色风格。</span></p><h4 id='117-模块拖动'><span>1.1.7 模块拖动</span></h4><p><span>鼠标移动到子模块的标题栏，鼠标按下可以拖动这个模块到任意位置，模块也可以拖动独立位置展示，也可以嵌入到对应布局中，拖动好位置以后自动保存到布局方案，下次启动自动应用。双击模块标题栏可以剥离窗体使之悬浮。</span></p><h4 id='118-调整间距'><span>1.1.8 调整间距</span></h4><p><span>鼠标移动到模块与模块的边缘，鼠标变成调整间距样式，可以左右或者上下拉动，调整好间距以后自动保存到布局方案，下次启动自动应用。</span></p><h3 id='12-系统设置'><span>1.2 系统设置</span></h3><p><span> </span><img src="snap/1-2-0.jpg" referrerpolicy="no-referrer"></p><p><strong><span>系统设置中的参数，可能会不定期做调整和修改及增加，下面的图示和参数描述未必全部一致，以最新的为准。</span></strong></p><h4 id='121-基本设置'><span>1.2.1 基本设置</span></h4><p><span> </span><img src="snap/1-2-1.jpg" referrerpolicy="no-referrer"></p><p><strong><span>参数说明</span></strong></p><ol start='' ><li><p><span>开机启动：默认关闭，开启后软件会随系统启动而启动。</span></p></li><li><p><span>模块拖动：默认开启，开启后模块可以自由拖动到合适的位置松开，一般在布局固定后在关闭，防止使用者在现场又托乱了。</span></p></li><li><p><span>切左下角：开启裁掉左下角以后，左侧底部和整体底部合并为一体，作为全局底部的一部分，就可以拖动模块到左侧底部，否则左侧底部作为左侧的一部分。</span></p></li><li><p><span>切右下角：开启裁掉右下角以后，右侧底部和整体底部合并为一体，作为全局底部的一部分，就可以拖动模块到右侧底部，否则右侧底部作为右侧的一部分。</span></p></li><li><p><span>定位线条：系统中曲线图表内置了定位线条，比如1月份，方便查看，可以开启。</span></p></li><li><p><span>百分符号：系统中曲线图表Y轴，有时候需要按照 100% 后面带百分比符号显示。</span></p></li><li><p><span>隐藏鼠标：鼠标未操作多久自动隐藏鼠标指针，默认5秒钟。</span></p></li><li><p><span>启动窗体：选择程序运行的启动窗体，默认大屏系统，还可选择控件演示、模块演示。</span></p></li><li><p><span>工作模式：默认工作模式是模拟数据，还可以选择数据库采集、串口采集（未实现）、网络采集（未实现）、网络请求。</span></p></li><li><p><span>地图样式：可选择静态图片、闪烁效果、迁徙效果、世界地图、区域地图多种样式，如果没有开启浏览器模块则自动采用静态图片的方式，区域地图默认是江西省吉安市，可以在代码中修改。</span></p></li><li><p><span>布局方案：和系统右键菜单中的布局方案功能一样。</span></p></li><li><p><span>软件标题：软件的标题文字，显示在软件中间顶部。</span></p></li><li><p><span>请求地址：工作模式选择网络请求的时候发送的网络请求地址。</span></p></li></ol><h4 id='122-视频设置'><span>1.2.2 视频设置</span></h4><p><span> </span><img src="snap/1-2-2.jpg" referrerpolicy="no-referrer"></p><p><strong><span>参数说明</span></strong></p><ol start='' ><li><p><span>视频循环：开启后设定的视频打开后会循环播放。</span></p></li><li><p><span>视频拉伸：开启后视频会填充整个窗体拉伸图像，否则按照比例自动拉伸。</span></p></li><li><p><span>视频回调：开启后采用CPU绘制图像，部分设备没有GPU需要开启。</span></p></li><li><p><span>视频循环：开启后会不断循环播放视频文件。</span></p></li><li><p><span>视频地址：视频窗体对应的视频地址，可以下拉选择内置的一些地址，也可以手动填写，如果多个视频窗口则自己增加对应的配置参数，支持本地视频文件、USB摄像头、网络摄像头、视频流地址等各种。</span></p></li></ol><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="cpp" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="cpp"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 9.51875px; left: 44px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 36px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -36px; width: 36px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">QStringList</span> <span class="cm-variable">listVideoUrl</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//本地视频文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"f:/mp5/1.mp4"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//USB摄像头-默认</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"video=USB2.0 PC CAMERA"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//USB摄像头-指定分辨率和帧率</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"video=USB Video Device|1280x720|30"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//网络摄像机地址-大华</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"rtsp://admin:12345@192.168.1.15:554/media/video1"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//网络摄像机地址-海康</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"rtsp://admin:Admin123456@192.168.1.64:554/Streaming/Channels/101?transportmode=unicast&amp;profile=Profile_2"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//网络视频流地址-美国</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//网络视频流地址-中国</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"http://vfx.mtime.cn/Video/2019/03/18/mp4/190318231014076505.mp4"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-comment">//网络视频流地址-海康萤石</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable">listVideoUrl</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-string">"https://hls01open.ys7.com/openlive/6e0b2be040a943489ef0b9bb344b96b8.hd.m3u8"</span>;</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 415px;"></div><div class="CodeMirror-gutters" style="height: 415px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre><h4 id='123-采集间隔设置'><span>1.2.3 采集间隔设置</span></h4><p><span> </span><img src="snap/1-2-3.jpg" referrerpolicy="no-referrer"></p><p><span>采集间隔设置不用做说明，一看就懂，单位毫秒，可定制每个模块都对应自己的采集方式、数据库、间隔等。</span></p><h4 id='124-数据库设置'><span>1.2.4 数据库设置</span></h4><p><span> </span><img src="snap/1-2-4.jpg" referrerpolicy="no-referrer"></p><p><span>理论上支持Qt支持的所有数据库，和具体程序无关，只要有对应的数据库的动态库和插件库就行，或者支持odbc数据源也可以，程序打通了odbc数据源的通信方式，所以支持各种数据库，可以先自己用对应的数据库工具连接数据库试试，通了数据库正常后在来测试程序。</span></p><p><span>亲测 Sqlite（Qt内置无需额外动态库）、MySql（高版本Qt需要自行编译插件）、PostgreSQL（开源免费的数据库，很好用）、SqlServer（需要设置ODBC数据源）、kingbase（国产人大金仓数据库，该数据库其实是基于PostgreSQL改的，通过odbc数据源方式测试无误）。</span></p><p><span>连接测试用来测试当前选择的数据库类型以及数据库信息，是否能连接数据库正常，可以避免数据库不通的情况下用来检测是否信息填写正确。</span></p><p><span>初始化数据库按钮用来执行sql脚本来生成对应的数据库，部分数据库支持数据库文件不存在的情况下通过sql语句来创建数据库，比如mysql、postgres等就支持直接sql语句新建数据库，有部分数据库可能不支持，需要手动先在数据库管理工具中新建好数据库，然后再来这里执行初始化数据库用来新建表和初始数据。</span></p><h3 id='13-工作模式'><span>1.3 工作模式</span></h3><p><span>本系统支持多种工作模式，以便适应各种需求，默认采用随机模拟数据，大屏基础版本也采用此工作模式。</span></p><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="cpp" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="cpp"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 9.51875px; left: 44px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 36px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>21</div></div></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -36px; width: 36px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-variable-3">void</span> <span class="cm-def">frmModule1::loadPlot1</span>()</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">{</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//对应表名(返回的时候充当唯一标识符flag)和字段名</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable">QString</span> <span class="cm-variable">tableName</span> <span class="cm-operator">=</span> <span class="cm-string">"t_1_1_mold_prod_total"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-variable">QString</span> <span class="cm-variable">columnName</span> <span class="cm-operator">=</span> <span class="cm-string">"name,prod_1,prod_2"</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//模拟数据采用随机数据 其他采用调用函数接口查询和请求数据</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">if</span> (<span class="cm-variable">AppConfig::WorkMode</span> <span class="cm-operator">==</span> <span class="cm-string">"timer"</span>) {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">double</span> <span class="cm-variable">min</span> <span class="cm-operator">=</span> <span class="cm-number">1</span>, <span class="cm-variable">max</span> <span class="cm-operator">=</span> <span class="cm-number">50</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">vdouble</span> <span class="cm-variable">value1</span>, <span class="cm-variable">value2</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">for</span> (<span class="cm-variable-3">int</span> <span class="cm-variable">i</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>; <span class="cm-variable">i</span> <span class="cm-operator">&lt;</span> <span class="cm-variable">rowNames1</span>.<span class="cm-variable">count</span>(); <span class="cm-operator">++</span><span class="cm-variable">i</span>) {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">value1</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-variable">QUIHelper::getRandValue</span>(<span class="cm-variable">min</span>, <span class="cm-variable">max</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">value2</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-variable">QUIHelper::getRandValue</span>(<span class="cm-variable">min</span>, <span class="cm-variable">max</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp;  }</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">loadPlot1</span>(<span class="cm-variable">lvdouble</span>() <span class="cm-operator">&lt;&lt;</span> <span class="cm-variable">value1</span> <span class="cm-operator">&lt;&lt;</span> <span class="cm-variable">value2</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;  } <span class="cm-keyword">else</span> <span class="cm-keyword">if</span> (<span class="cm-variable">AppConfig::WorkMode</span> <span class="cm-operator">==</span> <span class="cm-string">"db"</span>) {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">DbData::DbLocal</span><span class="cm-operator">-&gt;</span><span class="cm-variable">select</span>(<span class="cm-variable">tableName</span>, <span class="cm-variable">columnName</span>, <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">18</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;  } <span class="cm-keyword">else</span> <span class="cm-keyword">if</span> (<span class="cm-variable">AppConfig::WorkMode</span> <span class="cm-operator">==</span> <span class="cm-string">"http"</span>) {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">19</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable">DbData::DbHttp</span><span class="cm-operator">-&gt;</span><span class="cm-variable">select</span>(<span class="cm-variable">tableName</span>, <span class="cm-variable">columnName</span>, <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp;  }</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">21</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 484px;"></div><div class="CodeMirror-gutters" style="height: 484px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre><h4 id='131-模拟数据'><span>1.3.1 模拟数据</span></h4><p><span>如果工作模式选择的是模拟数据，则采用随机数模拟生成数据并设置。</span></p><h4 id='132-数据库采集'><span>1.3.2 数据库采集</span></h4><p><strong><span>具体数据库表字段说明参见后面的数据库说明。</span></strong></p><p><span>如果工作模式选择的是数据库采集，则会自动连接设置的数据库，可以用对应的数据库管理工具连接数据库，打开对应的表，然后更改其中的数据，保存，可看到对应的数据反应到界面上。</span></p><p><span>系统支持一个系统下的软件远程访问另一个系统下的数据库，比如linux系统或者mac系统远程访问win系统上的mysql数据库，数据库也可以放在云端比如阿里云（亲测无误），只要对应IP和端口可达就行，验证是否可达可以用对应的数据库管理工具连接即可。</span></p><p><span>理论上odbc的方式支持多种数据库，比如sql server，oracle，postgresql等，所以如果没有插件支持的数据库可以考虑用odbc的方式，odbc也是跨平台的。</span></p><p><span>如果需要远程访问mysql数据库，mysql数据库需要设置用户 root@%</span>
<span> </span><img src="snap/1-3-2.jpg" referrerpolicy="no-referrer">
<span>sql server数据库的配置规则，下面的链接只是参考，基本上正常电脑安装好以后都不需要下面的配置。</span>
<a href='https://blog.csdn.net/mozhi111/article/details/80281388' target='_blank' class='url'>https://blog.csdn.net/mozhi111/article/details/80281388</a>
<a href='https://blog.csdn.net/happymagic/article/details/8673476' target='_blank' class='url'>https://blog.csdn.net/happymagic/article/details/8673476</a></p><p><span>远程访问sql server数据库，需要在运行软件的电脑上也需要配置数据源，不然很可能无法访问。</span></p><p><strong><span>sql server数据库配置步骤</span></strong></p><ol start='' ><li><p><span>第一步：安装好sql server数据库，比如sql server 2014，设置混合验证模式并设置密码。</span></p></li><li><p><span>第二步：打开sql server management studio，左侧，新建数据库bigscreen。</span></p></li><li><p><span>第三步：新建odbc数据源，cmd执行命令odbcad32打开数据源配置，命名为bigscreen，关联到数据库bigscreen。</span>
<span>切记：Qt中连接sqlserver数据库采用的odbc方式，数据库名填写的是数据源中的名称，而不是数据库中的数据库名称，比如数据源名字是aaa，关联到数据库bbb，连接的数据库名称是填写aaa而不是bbb。</span></p></li></ol><p><span>安装PostgreSQL数据库之后，默认只能本地访问连接。如果想在其他主机上访问PostgreSQL数据库服务器，就需要进行相应的配置。</span>
<a href='https://blog.csdn.net/weixin_36816337/article/details/81739819' target='_blank' class='url'>https://blog.csdn.net/weixin_36816337/article/details/81739819</a>
<span> </span><img src="snap/1-3-3.jpg" referrerpolicy="no-referrer">
<span>人大金仓数据库kingbase，其实就是postgresql数据库改的，如果是WIN10系统建议安装在系统盘以外，不然没有权限，导致奇奇怪怪的问题。</span></p><p><strong><span>特别提示</span></strong></p><ul><li><p><span>数据库有位数区分，如果是32位的qt，对应打包目录要放32位的数据库的dll，比如放32位的libmysql.dll，不然会提示找不到驱动。</span></p></li><li><p><span>无论32位还是64位的qt程序，都能连接64位的数据库。 </span></p></li><li><p><span>意思是在开发阶段，必须放正确位数的dll，而数据库只需要安装64位的即可。</span></p></li><li><p><span>sqlserver数据库采用odbc数据源的方式进行连接，而且是微软亲生的，估计在系统层做了无微不至的关怀，qt程序发布的时候啥也不用带。</span></p></li></ul><h4 id='133-串口采集'><span>1.3.3 串口采集</span></h4><p><span>需要定制协议，比如RS232、RS485、Modbus、Mqtt等</span></p><h4 id='134-网络采集'><span>1.3.4 网络采集</span></h4><p><span>需要定制协议，比如tcp client、tcp server、udp client、udp server、websocket等。</span></p><h4 id='135-网络请求'><span>1.3.5 网络请求</span></h4><p><span> </span><img src="snap/1-3-5.jpg" referrerpolicy="no-referrer"></p><p><span>找到bigscreen可执行文件所在目录下的httpserver文件，双击运行，切换到网络请求服务器页面，回复数据选择文件内容，单击启动服务器，左侧消息栏可以看到实时打印的数据，从json文件读取的数据，实际中可以是从数据库中采集的数据等。网络请求客户端/服务器工具httpserver，也是纯Qt编写的工具。</span></p><p><strong><span>功能特点</span></strong></p><ol start='' ><li><p><span>支持多个客户端连接并发同时处理，100个毫无压力。</span></p></li><li><p><span>可设置http请求是长连接还是短连接，默认长连接。</span></p></li><li><p><span>支持多种回复数据格式，其中包括网页内容、json数据等。</span></p></li><li><p><span>服务端示例中同时包含读取文件回复、读取数据库回复。</span></p></li><li><p><span>支持8种配色方案（暗黑、灰黑、深绿、浅黄、深蓝、深黑、暗蓝、默认）。</span></p></li><li><p><span>客户端可指定请求地址，服务端可指定网卡和端口进行监听。</span></p></li><li><p><span>所有请求和连接都有计数，所有在线请求的IP和端口都显示在表格中。</span></p></li><li><p><span>可以提供一个简易的网页配置服务，包括交互，作为设备的web配置。</span></p></li><li><p><span>可自由拓展增加权限校验等，作为一个http请求服务器。</span></p></li><li><p><span>纯Qt实现，代码框架整洁，注释完整，支持任意Qt版本、任意编译器、任意操作系统。</span></p></li></ol><h4 id='136-请求格式'><span>1.3.6 请求格式</span></h4><p><span>请求地址：</span><a href='http://127.0.0.1:6000' target='_blank' class='url'>http://127.0.0.1:6000</a><span> 可以自行在系统设置中更改。</span></p><h5 id='1361-请求数据'><span>1.3.6.1 请求数据</span></h5><p><span>其他表请求格式完全一致。</span>
<span>tag=t_1_1_mold_prod_total&amp;tableName=t_1_1_mold_prod_total&amp;columnName=name,prod_1,prod_2</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>tag</span></td><td style='text-align:left;' ><span>标识符，用于服务端接收到请求后按照这个标识符返回数据，这里内容填的是具体的表名，方便收到数据直接解析并发送信号到对应模块窗体显示数据。</span></td></tr><tr><td style='text-align:left;' ><span>tableName</span></td><td style='text-align:left;' ><span>要查询的表名。</span></td></tr><tr><td style='text-align:left;' ><span>columnName</span></td><td style='text-align:left;' ><span>对应表的字段名称集合，用英文逗号隔开。</span></td></tr></tbody></table></figure><h5 id='1362-返回数据'><span>1.3.6.2 返回数据</span></h5><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="json" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="json"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 9.51875px; left: 44px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 36px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre><div class="CodeMirror-linenumber CodeMirror-gutter-elt"><div>19</div></div></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -36px; width: 36px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">{</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"tag"</span>: <span class="cm-string">"t_1_1_mold_prod_total"</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"result"</span>: [{</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"internal_id"</span>: <span class="cm-number">1</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"name"</span>: <span class="cm-string">"设变"</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_1"</span>: <span class="cm-number">16</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_2"</span>: <span class="cm-number">12</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span>}, {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"internal_id"</span>: <span class="cm-number">2</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"name"</span>: <span class="cm-string">"修模"</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_1"</span>: <span class="cm-number">20</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_2"</span>: <span class="cm-number">25</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span>}, {</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"internal_id"</span>: <span class="cm-number">3</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"name"</span>: <span class="cm-string">"新模"</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_1"</span>: <span class="cm-number">40</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-tab" role="presentation" cm-text="	">    </span><span class="cm-string cm-property">"prod_2"</span>: <span class="cm-number">25</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 27px;">18</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation" cm-text="	">    </span>}]</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -36px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 27px;">19</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">}</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 438px;"></div><div class="CodeMirror-gutters" style="height: 438px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 35px;"></div></div></div></div></pre><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>tag</span></td><td style='text-align:left;' ><span>唯一标识符，用于标识当前接收到哪个请求的回复数据，对方请求的时候会发过来。</span></td></tr><tr><td style='text-align:left;' ><span>result</span></td><td style='text-align:left;' ><span>结果数组，内容按照表格行一行行包装的数据。</span></td></tr></tbody></table></figure><h5 id='1363-整体流程'><span>1.3.6.3 整体流程</span></h5><p><span>客户端发送请求，指定了唯一标识符+表名+要查询的字段名称集合，服务器收到请求后，解析表名+字段名称集合，从数据库中查询对应的内容组成json字符串返回，带上唯一标识符。</span></p><p><span>具体解析数据在datahttp类中，如果是自定义的表和字段，则需要在datahttp类中的initTable方法自行添加表名和字段名即可，非常方便，一个表只需要增加一行代码。</span></p><h4 id='137-拓展构想'><span>1.3.7 拓展构想</span></h4><p><span>现在数据采集无论是数据库采集还是网络请求采集，对应的表名和字段名都是写死在代码中，尽管目前已经封装好了可以自行添加表和字段，但是还不够通用，后期打算通过从配置文件读取。</span></p><h3 id='14-其他说明'><span>1.4 其他说明</span></h3><ol start='' ><li><p><span>可执行文件同级文件夹有layout+layout_1440+layout_1920，程序默认自动识别分辨率并加载对应的布局文件夹，比如1920分辨率则从layout_1920文件夹加载布局，并作为整体布局文件夹。</span></p></li><li><p><span>如果发现布局拖动乱了，可以直接鼠标右键选择恢复布局即可，在保存布局以前。</span></p></li><li><p><span>在中间地图模块鼠标右键可以弹出菜单，切换布局和配色方案等。</span></p></li><li><p><span>在模块的标题栏上右键可以弹出默认的dock菜单，用来显示和隐藏各模块。</span></p></li><li><p><span>软件关闭过程中会自动保存布局，下次启动以后自动应用。</span></p></li><li><p><span>如果使用的默认的配色方案比如紫色风格，则配置文件中的颜色全部无效，会自动应用代码中的颜色，如果需要启用自定义的颜色，则需要先将配置文件的皮肤参数修改成 Theme=\x81ea\x5b9a\x4e49\x98ce\x683c 即可。此时打开软件会应用配置文件中的颜色。</span></p></li><li><p><span>右键菜单可以截图保存，默认命名为 配色方案名称_布局方案名称.png 保存在snap目录下。</span></p></li><li><p><span>在二级窗体的标题栏上右键弹出模块菜单，可以对单个模块打开关闭，其他地方右键全局菜单。</span></p></li></ol><h2 id='2-数据库说明'><span>2 数据库说明</span></h2><p><span>数据库表的设计按照模块的顺序，比如frmmodule1主模块中包括4个子模块，每个子模块都对应一个表，所有表名的前缀是 t_ 以便区分，第一个数字表示主模块编号，第二个数字表示子模块编号。</span></p><p><span>表名格式如下：</span></p><ul><li><p><span>t_1_1_mold_prod_total</span></p></li><li><p><span>t_1_2_mold_prod_monthly</span></p></li><li><p><span>t_1_3_wp_prod_total</span></p></li><li><p><span>t_1_4_wp_prod_monthly</span></p></li></ul><p><span>源码目录下的bigscreen.sql为数据库脚本，可以在系统设置中单击初始化数据来执行。</span>
<span>如果是需要对接自己的系统，可能涉及到部分数据不一致的情况，你可以：</span>
<span>第一：尽量用现有的表，现有的表各种各样都有，你找到你类似的往里面填数据就行。</span>
<span>第二：如果没有合适的表，则需要调整对应的模块代码。</span></p><h3 id='21-产量汇总模块'><span>2.1 产量汇总模块</span></h3><p><span> </span><img src="snap/2-1-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>模具产量</span></td><td style='text-align:left;' ><span>t_1_1_mold_prod_total</span></td></tr><tr><td style='text-align:left;' ><span>每月模具产量趋势图</span></td><td style='text-align:left;' ><span>t_1_2_mold_prod_monthly</span></td></tr><tr><td style='text-align:left;' ><span>零件产量</span></td><td style='text-align:left;' ><span>t_1_3_wp_prod_total</span></td></tr><tr><td style='text-align:left;' ><span>每月零件产量趋势图</span></td><td style='text-align:left;' ><span>t_1_4_wp_prod_monthly</span></td></tr></tbody></table></figure><h4 id='211-模具产量'><span>2.1.1 模具产量</span></h4><p><span> </span><img src="snap/2-1-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_1_1_mold_prod_total</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>prod_1</span></td><td style='text-align:left;' ><span>系列1</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_2</span></td><td style='text-align:left;' ><span>系列2</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>name</span></th><th><span>prod_1</span></th><th><span>prod_2</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>设变</span></td><td><span>14</span></td><td><span>12</span></td></tr><tr><td><span>2</span></td><td><span>修模</span></td><td><span>20</span></td><td><span>25</span></td></tr><tr><td><span>3</span></td><td><span>新模</span></td><td><span>40</span></td><td><span>25</span></td></tr></tbody></table></figure><h4 id='212-每月模具产量趋势图'><span>2.1.2 每月模具产量趋势图</span></h4><p><span> </span><img src="snap/2-1-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_1_2_mold_prod_monthly</span><span>	</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>year</span></td><td style='text-align:left;' ><span>年份</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>4</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>month</span></td><td style='text-align:left;' ><span>月份</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>4</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>prod_1</span></td><td style='text-align:left;' ><span>系列1</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_2</span></td><td style='text-align:left;' ><span>系列2</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_3</span></td><td style='text-align:left;' ><span>系列3</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>year</span></th><th><span>month</span></th><th><span>prod_1</span></th><th><span>prod_2</span></th><th><span>prod_3</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>2018</span></td><td><span>5月</span></td><td><span>32</span></td><td><span>54</span></td><td><span>80</span></td></tr><tr><td><span>2</span></td><td><span>2018</span></td><td><span>6月</span></td><td><span>42</span></td><td><span>34</span></td><td><span>33</span></td></tr><tr><td><span>3</span></td><td><span>2018</span></td><td><span>7月</span></td><td><span>45</span></td><td><span>62</span></td><td><span>44</span></td></tr><tr><td><span>4</span></td><td><span>2018</span></td><td><span>8月</span></td><td><span>23</span></td><td><span>38</span></td><td><span>65</span></td></tr><tr><td><span>5</span></td><td><span>2018</span></td><td><span>9月</span></td><td><span>12</span></td><td><span>12</span></td><td><span>77</span></td></tr><tr><td><span>6</span></td><td><span>2018</span></td><td><span>10月</span></td><td><span>22</span></td><td><span>33</span></td><td><span>34</span></td></tr><tr><td><span>7</span></td><td><span>2018</span></td><td><span>11月</span></td><td><span>23</span></td><td><span>45</span></td><td><span>22</span></td></tr><tr><td><span>8</span></td><td><span>2018</span></td><td><span>12月</span></td><td><span>32</span></td><td><span>65</span></td><td><span>43</span></td></tr><tr><td><span>9</span></td><td><span>2019</span></td><td><span>1月</span></td><td><span>12</span></td><td><span>23</span></td><td><span>65</span></td></tr><tr><td><span>10</span></td><td><span>2019</span></td><td><span>2月</span></td><td><span>21</span></td><td><span>77</span></td><td><span>55</span></td></tr><tr><td><span>11</span></td><td><span>2019</span></td><td><span>3月</span></td><td><span>22</span></td><td><span>87</span></td><td><span>33</span></td></tr><tr><td><span>12</span></td><td><span>2019</span></td><td><span>4月</span></td><td><span>23</span></td><td><span>45</span></td><td><span>34</span></td></tr></tbody></table></figure><h4 id='213-零件产量'><span>2.1.3 零件产量</span></h4><p><span> </span><img src="snap/2-1-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_1_3_wp_prod_total</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>prod_1</span></td><td style='text-align:left;' ><span>系列1</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_2</span></td><td style='text-align:left;' ><span>系列2</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>name</span></th><th><span>prod_1</span></th><th><span>prod_2</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>其他</span></td><td><span>8544</span></td><td><span>10000</span></td></tr><tr><td><span>2</span></td><td><span>钢件</span></td><td><span>1000</span></td><td><span>5002</span></td></tr><tr><td><span>3</span></td><td><span>电极</span></td><td><span>2000</span></td><td><span>3000</span></td></tr></tbody></table></figure><h4 id='214-每月零件产量趋势图'><span>2.1.4 每月零件产量趋势图</span></h4><p><span> </span><img src="snap/2-1-4.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_1_4_wp_prod_monthly</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>year</span></td><td style='text-align:left;' ><span>年份</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>4</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>month</span></td><td style='text-align:left;' ><span>月份</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>4</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>prod_1</span></td><td style='text-align:left;' ><span>系列1</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_2</span></td><td style='text-align:left;' ><span>系列2</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>prod_3</span></td><td style='text-align:left;' ><span>系列3</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>year</span></th><th><span>month</span></th><th><span>prod_1</span></th><th><span>prod_2</span></th><th><span>prod_3</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>2018</span></td><td><span>5月</span></td><td><span>32</span></td><td><span>54</span></td><td><span>23</span></td></tr><tr><td><span>2</span></td><td><span>2018</span></td><td><span>6月</span></td><td><span>42</span></td><td><span>34</span></td><td><span>30</span></td></tr><tr><td><span>3</span></td><td><span>2018</span></td><td><span>7月</span></td><td><span>45</span></td><td><span>62</span></td><td><span>44</span></td></tr><tr><td><span>4</span></td><td><span>2018</span></td><td><span>8月</span></td><td><span>23</span></td><td><span>38</span></td><td><span>65</span></td></tr><tr><td><span>5</span></td><td><span>2018</span></td><td><span>9月</span></td><td><span>12</span></td><td><span>12</span></td><td><span>77</span></td></tr><tr><td><span>6</span></td><td><span>2018</span></td><td><span>10月</span></td><td><span>22</span></td><td><span>33</span></td><td><span>34</span></td></tr><tr><td><span>7</span></td><td><span>2018</span></td><td><span>11月</span></td><td><span>23</span></td><td><span>45</span></td><td><span>22</span></td></tr><tr><td><span>8</span></td><td><span>2018</span></td><td><span>12月</span></td><td><span>32</span></td><td><span>65</span></td><td><span>43</span></td></tr><tr><td><span>9</span></td><td><span>2019</span></td><td><span>1月</span></td><td><span>12</span></td><td><span>23</span></td><td><span>65</span></td></tr><tr><td><span>10</span></td><td><span>2019</span></td><td><span>2月</span></td><td><span>21</span></td><td><span>77</span></td><td><span>55</span></td></tr><tr><td><span>11</span></td><td><span>2019</span></td><td><span>3月</span></td><td><span>22</span></td><td><span>87</span></td><td><span>33</span></td></tr><tr><td><span>12</span></td><td><span>2019</span></td><td><span>4月</span></td><td><span>23</span></td><td><span>45</span></td><td><span>34</span></td></tr></tbody></table></figure><h3 id='22-当月计划模块'><span>2.2 当月计划模块</span></h3><p><span> </span><img src="snap/2-2-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>模具达成率</span></td><td style='text-align:left;' ><span>t_2_1_mold_achie_rate</span></td></tr><tr><td style='text-align:left;' ><span>零件达成率</span></td><td style='text-align:left;' ><span>t_2_2_wp_achie_rate</span></td></tr><tr><td style='text-align:left;' ><span>零件数</span></td><td style='text-align:left;' ><span>t_2_3_wp_achie_number</span></td></tr><tr><td style='text-align:left;' ><span>每日工序达成数</span></td><td style='text-align:left;' ><span>t_2_4_process_achie_number</span></td></tr></tbody></table></figure><h4 id='221-模具达成率'><span>2.2.1 模具达成率</span></h4><p><span> </span><img src="snap/2-2-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_2_1_mold_achie_rate</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>plan</span></td><td style='text-align:left;' ><span>计划数</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>achieved</span></td><td style='text-align:left;' ><span>达成数</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：1</span><span>	</span><span>200</span><span>	</span><span>110</span></p><h4 id='222-零件达成率'><span>2.2.2 零件达成率</span></h4><p><span> </span><img src="snap/2-2-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_2_2_wp_achie_rate</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>plan</span></td><td style='text-align:left;' ><span>计划数</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>achieved</span></td><td style='text-align:left;' ><span>达成数</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>name</span></th><th><span>plan</span></th><th><span>achieved</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>模仁</span></td><td><span>100</span></td><td><span>200</span></td></tr><tr><td><span>2</span></td><td><span>镶件</span></td><td><span>122</span></td><td><span>100</span></td></tr><tr><td><span>3</span></td><td><span>辅件</span></td><td><span>300</span></td><td><span>500</span></td></tr><tr><td><span>4</span></td><td><span>电极</span></td><td><span>155</span></td><td><span>200</span></td></tr></tbody></table></figure><h4 id='223-零件数'><span>2.2.3 零件数</span></h4><p><span> </span><img src="snap/2-2-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_2_3_wp_achie_number</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>wp_achie_number</span></td><td style='text-align:left;' ><span>零件数</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：1</span><span>	</span><span>1234</span></p><h4 id='224-每日工序达成数'><span>2.2.4 每日工序达成数</span></h4><p><span> </span><img src="snap/2-2-4.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_2_4_process_achie_number</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>day</span></td><td style='text-align:left;' ><span>日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>2</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>green</span></td><td style='text-align:left;' ><span>绿色数量</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>blue</span></td><td style='text-align:left;' ><span>蓝色数量</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>red</span></td><td style='text-align:left;' ><span>红色数量</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>day</span></th><th><span>green</span></th><th><span>blue</span></th><th><span>red</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>1</span></td><td><span>20</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>2</span></td><td><span>2</span></td><td><span>20</span></td><td><span>2</span></td><td><span>0</span></td></tr><tr><td><span>3</span></td><td><span>3</span></td><td><span>23</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>4</span></td><td><span>4</span></td><td><span>32</span></td><td><span>4</span></td><td><span>0</span></td></tr><tr><td><span>5</span></td><td><span>5</span></td><td><span>43</span></td><td><span>5</span></td><td><span>0</span></td></tr><tr><td><span>6</span></td><td><span>6</span></td><td><span>23</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>7</span></td><td><span>7</span></td><td><span>44</span></td><td><span>0</span></td><td><span>5</span></td></tr><tr><td><span>8</span></td><td><span>8</span></td><td><span>12</span></td><td><span>0</span></td><td><span>5</span></td></tr><tr><td><span>9</span></td><td><span>9</span></td><td><span>54</span></td><td><span>0</span></td><td><span>4</span></td></tr><tr><td><span>10</span></td><td><span>10</span></td><td><span>42</span></td><td><span>0</span></td><td><span>3</span></td></tr><tr><td><span>11</span></td><td><span>11</span></td><td><span>47</span></td><td><span>6</span></td><td><span>0</span></td></tr><tr><td><span>12</span></td><td><span>12</span></td><td><span>34</span></td><td><span>4</span></td><td><span>0</span></td></tr><tr><td><span>13</span></td><td><span>13</span></td><td><span>25</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>14</span></td><td><span>14</span></td><td><span>38</span></td><td><span>6</span></td><td><span>0</span></td></tr><tr><td><span>15</span></td><td><span>15</span></td><td><span>43</span></td><td><span>0</span></td><td><span>4</span></td></tr><tr><td><span>16</span></td><td><span>16</span></td><td><span>56</span></td><td><span>0</span></td><td><span>3</span></td></tr><tr><td><span>17</span></td><td><span>17</span></td><td><span>65</span></td><td><span>4</span></td><td><span>0</span></td></tr><tr><td><span>18</span></td><td><span>18</span></td><td><span>43</span></td><td><span>5</span></td><td><span>0</span></td></tr><tr><td><span>19</span></td><td><span>19</span></td><td><span>34</span></td><td><span>0</span></td><td><span>5</span></td></tr><tr><td><span>20</span></td><td><span>20</span></td><td><span>55</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>21</span></td><td><span>21</span></td><td><span>47</span></td><td><span>6</span></td><td><span>0</span></td></tr><tr><td><span>22</span></td><td><span>22</span></td><td><span>34</span></td><td><span>4</span></td><td><span>0</span></td></tr><tr><td><span>23</span></td><td><span>23</span></td><td><span>25</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>24</span></td><td><span>24</span></td><td><span>38</span></td><td><span>6</span></td><td><span>0</span></td></tr><tr><td><span>25</span></td><td><span>25</span></td><td><span>43</span></td><td><span>0</span></td><td><span>4</span></td></tr><tr><td><span>26</span></td><td><span>26</span></td><td><span>56</span></td><td><span>0</span></td><td><span>3</span></td></tr><tr><td><span>27</span></td><td><span>27</span></td><td><span>65</span></td><td><span>4</span></td><td><span>0</span></td></tr><tr><td><span>28</span></td><td><span>28</span></td><td><span>43</span></td><td><span>5</span></td><td><span>0</span></td></tr><tr><td><span>29</span></td><td><span>29</span></td><td><span>34</span></td><td><span>0</span></td><td><span>5</span></td></tr><tr><td><span>30</span></td><td><span>30</span></td><td><span>55</span></td><td><span>3</span></td><td><span>0</span></td></tr><tr><td><span>31</span></td><td><span>31</span></td><td><span>42</span></td><td><span>0</span></td><td><span>3</span></td></tr></tbody></table></figure><h3 id='23-设备监控模块'><span>2.3 设备监控模块</span></h3><p><span> </span><img src="snap/2-3-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>设备运行状态</span></td><td style='text-align:left;' ><span>t_3_1_device_runtime</span></td></tr><tr><td style='text-align:left;' ><span>稼动率</span></td><td style='text-align:left;' ><span>t_3_2_oee</span></td></tr></tbody></table></figure><h4 id='231-设备运行状态'><span>2.3.1 设备运行状态</span></h4><p><span> </span><img src="snap/2-3-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_3_1_device_runtime</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>group_name</span></td><td style='text-align:left;' ><span>分组名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>4</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>no_id</span></td><td style='text-align:left;' ><span>分组编号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>text_1</span></td><td style='text-align:left;' ><span>文字1</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>text_2</span></td><td style='text-align:left;' ><span>文字2</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>status</span></td><td style='text-align:left;' ><span>状态 1-开机 2-待机 3-维护 4-空</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>1</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>progress</span></td><td style='text-align:left;' ><span>进度</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>flicker</span></td><td style='text-align:left;' ><span>是否闪烁</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>1</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>group_name</span></th><th><span>no_id</span></th><th><span>name</span></th><th><span>text_1</span></th><th><span>text_2</span></th><th><span>status</span></th><th><span>progress</span></th><th><span>flicker</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>CNC</span></td><td><span>1</span></td><td><span>CNC1</span></td><td><span>190411</span></td><td><span>PID11</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>2</span></td><td><span>CNC</span></td><td><span>2</span></td><td><span>CNC2</span></td><td><span>190412</span></td><td><span>PID12</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>3</span></td><td><span>CNC</span></td><td><span>3</span></td><td><span>CNC3</span></td><td><span>190413</span></td><td><span>PID13</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>4</span></td><td><span>CNC</span></td><td><span>4</span></td><td><span>CNC4</span></td><td><span>190414</span></td><td><span>PID14</span></td><td><span>2</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>5</span></td><td><span>CNC</span></td><td><span>5</span></td><td><span>CNC5</span></td><td><span>190415</span></td><td><span>PID15</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>6</span></td><td><span>CNC</span></td><td><span>6</span></td><td><span>CNC6</span></td><td><span>190416</span></td><td><span>PID16</span></td><td><span>2</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>7</span></td><td><span>CNC</span></td><td><span>7</span></td><td><span>CNC7</span></td><td><span>190417</span></td><td><span>PID17</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>8</span></td><td><span>CNC</span></td><td><span>8</span></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td><span>4</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>9</span></td><td><span>EDM</span></td><td><span>1</span></td><td><span>EDM1</span></td><td><span>190421</span></td><td><span>PID21</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>10</span></td><td><span>EDM</span></td><td><span>2</span></td><td><span>EDM2</span></td><td><span>190422</span></td><td><span>PID23</span></td><td><span>2</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>11</span></td><td><span>EDM</span></td><td><span>3</span></td><td><span>EDM3</span></td><td><span>190423</span></td><td><span>PID23</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>12</span></td><td><span>EDM</span></td><td><span>4</span></td><td><span>EDM4</span></td><td><span>190424</span></td><td><span>PID24</span></td><td><span>3</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>13</span></td><td><span>EDM</span></td><td><span>5</span></td><td><span>EDM5</span></td><td><span>190425</span></td><td><span>PID25</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>14</span></td><td><span>EDM</span></td><td><span>6</span></td><td><span>EDM6</span></td><td><span>190426</span></td><td><span>PID26</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>15</span></td><td><span>EDM</span></td><td><span>7</span></td><td><span>EDM7</span></td><td><span>190427</span></td><td><span>PID27</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>16</span></td><td><span>EDM</span></td><td><span>8</span></td><td><span>EDM8</span></td><td><span>190428</span></td><td><span>PID28</span></td><td><span>2</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>17</span></td><td><span>WEDM</span></td><td><span>1</span></td><td><span>WEDM1</span></td><td><span>190431</span></td><td><span>PID28</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>18</span></td><td><span>WEDM</span></td><td><span>2</span></td><td><span>WEDM2</span></td><td><span>190432</span></td><td><span>PID28</span></td><td><span>3</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>19</span></td><td><span>WEDM</span></td><td><span>3</span></td><td><span>WEDM3</span></td><td><span>190434</span></td><td><span>PID29</span></td><td><span>2</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>20</span></td><td><span>WEDM</span></td><td><span>4</span></td><td><span>WEDM4</span></td><td><span>190435</span></td><td><span>PID30</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>21</span></td><td><span>WEDM</span></td><td><span>5</span></td><td><span>WEDM5</span></td><td><span>190436</span></td><td><span>PID36</span></td><td><span>1</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>22</span></td><td><span>WEDM</span></td><td><span>6</span></td><td><span>WEDM6</span></td><td><span>190437</span></td><td><span>PID37</span></td><td><span>3</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>23</span></td><td><span>WEDM</span></td><td><span>7</span></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td><span>4</span></td><td><span>0</span></td><td><span>0</span></td></tr><tr><td><span>24</span></td><td><span>WEDM</span></td><td><span>8</span></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td><span>4</span></td><td><span>0</span></td><td><span>0</span></td></tr></tbody></table></figure><h4 id='232-稼动率'><span>2.3.2 稼动率</span></h4><p><span> </span><img src="snap/2-3-2.jpg" referrerpolicy="no-referrer"><span>   </span><img src="snap/2-3-3.jpg" referrerpolicy="no-referrer"><span>   </span><img src="snap/2-3-4.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_3_2_oee</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>cnc</span></td><td style='text-align:left;' ><span>类别-cnc</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>edm</span></td><td style='text-align:left;' ><span>类别-edm</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>wedm</span></td><td style='text-align:left;' ><span>类别-wedm</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' ><span>不为空</span></td></tr></tbody></table></figure><p><span>默认数据：1</span><span>	</span><span>110</span><span>	</span><span>90</span><span>	</span><span>90</span></p><h3 id='24-模具进度模块'><span>2.4 模具进度模块</span></h3><p><span> </span><img src="snap/2-4-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>模具进度</span></td><td style='text-align:left;' ><span>t_4_1_mold_progress</span></td></tr><tr><td style='text-align:left;' ><span>模具状态统计</span></td><td style='text-align:left;' ><span>t_4_2_mold_status_parcent</span></td></tr><tr><td style='text-align:left;' ><span>加工中模具数量</span></td><td style='text-align:left;' ><span>t_4_3_mold_processing_num</span></td></tr></tbody></table></figure><h4 id='241-模具进度'><span>2.4.1 模具进度</span></h4><p><span> </span><img src="snap/2-4-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_3_2_oee</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>mold_no</span></td><td style='text-align:left;' ><span>模具编号</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>tn_no</span></td><td style='text-align:left;' ><span>版本号</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>type</span></td><td style='text-align:left;' ><span>类型</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>status</span></td><td style='text-align:left;' ><span>状态</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>product_name</span></td><td style='text-align:left;' ><span>产品名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>plan_date</span></td><td style='text-align:left;' ><span>计划交期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>green</span></td><td style='text-align:left;' ><span>当前进度绿色</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>yellow</span></td><td style='text-align:left;' ><span>当前进度黄色</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>red</span></td><td style='text-align:left;' ><span>当前进度红色</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>mold_no</span></th><th><span>tn_no</span></th><th><span>type</span></th><th><span>status</span></th><th><span>product_name</span></th><th><span>plan_date</span></th><th><span>green</span></th><th><span>yellow</span></th><th><span>red</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>IK19001</span></td><td><span>T0</span></td><td><span>新模</span></td><td><span>加工中</span></td><td><span>后盖</span></td><td><span>2019/3/29</span></td><td><span>60</span></td><td><span>20</span></td><td><span>20</span></td></tr><tr><td><span>2</span></td><td><span>IK19002</span></td><td><span>T1</span></td><td><span>修模</span></td><td><span>加工中</span></td><td><span>前盖</span></td><td><span>2019/4/3</span></td><td><span>50</span></td><td><span>50</span></td><td><span>0</span></td></tr><tr><td><span>3</span></td><td><span>IK29003</span></td><td><span>T2</span></td><td><span>修模</span></td><td><span>加工中</span></td><td><span>外壳</span></td><td><span>2019/4/8</span></td><td><span>30</span></td><td><span>70</span></td><td><span>0</span></td></tr><tr><td><span>4</span></td><td><span>IK19004</span></td><td><span>T0</span></td><td><span>新模</span></td><td><span>加工中</span></td><td><span>侧边</span></td><td><span>2019/4/18</span></td><td><span>90</span></td><td><span>5</span></td><td><span>5</span></td></tr><tr><td><span>5</span></td><td><span>IK19005</span></td><td><span>T3</span></td><td><span>修模</span></td><td><span>加工中</span></td><td><span>边框</span></td><td><span>2019/4/3</span></td><td><span>60</span></td><td><span>40</span></td><td><span>0</span></td></tr><tr><td><span>6</span></td><td><span>IK19006</span></td><td><span>T0</span></td><td><span>新模</span></td><td><span>加工中</span></td><td><span>后盖</span></td><td><span>2019/4/26</span></td><td><span>70</span></td><td><span>25</span></td><td><span>5</span></td></tr><tr><td><span>7</span></td><td><span>IK19007</span></td><td><span>T0</span></td><td><span>新模</span></td><td><span>加工中</span></td><td><span>面板</span></td><td><span>2019/4/7</span></td><td><span>25</span></td><td><span>25</span></td><td><span>50</span></td></tr><tr><td><span>8</span></td><td><span>IK19008</span></td><td><span>T0</span></td><td><span>新模</span></td><td><span>加工中</span></td><td><span>插件</span></td><td><span>2019/3/31</span></td><td><span>20</span></td><td><span>40</span></td><td><span>40</span></td></tr><tr><td><span>9</span></td><td><span>IK19009</span></td><td><span>T1</span></td><td><span>修模</span></td><td><span>加工中</span></td><td><span>面板</span></td><td><span>2019/3/12</span></td><td><span>10</span></td><td><span>60</span></td><td><span>30</span></td></tr><tr><td><span>10</span></td><td><span>IK19010</span></td><td><span>T2</span></td><td><span>修模</span></td><td><span>加工中</span></td><td><span>后盖</span></td><td><span>2019/2/12</span></td><td><span>0</span></td><td><span>100</span></td><td><span>0</span></td></tr></tbody></table></figure><h4 id='242-模具状态统计'><span>2.4.2 模具状态统计</span></h4><p><span> </span><img src="snap/2-4-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_4_2_mold_status_parcent</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>finished</span></td><td style='text-align:left;' ><span>正常交付百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>processing</span></td><td style='text-align:left;' ><span>加工中百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>不为空</span></td></tr><tr><td style='text-align:left;' ><span>delay</span></td><td style='text-align:left;' ><span>延期百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>不为空</span></td></tr></tbody></table></figure><p><span>默认数据：</span>
<span>1</span><span>	</span><span>60</span><span>	</span><span>25</span><span>	</span><span>15</span></p><h4 id='243-加工中模具数量'><span>2.4.3 加工中模具数量</span></h4><p><span> </span><img src="snap/2-4-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_4_3_mold_processing_num</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>mold_processing_number</span></td><td style='text-align:left;' ><span>加工中数量</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>不为空</span></td></tr></tbody></table></figure><p><span>默认数据：87</span></p><h3 id='25-负荷分布模块'><span>2.5 负荷分布模块</span></h3><p><span> </span><img src="snap/2-5-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>工序计划负荷</span></td><td style='text-align:left;' ><span>t_5_1_work_load</span></td></tr><tr><td style='text-align:left;' ><span>当日负荷</span></td><td style='text-align:left;' ><span>t_5_2_work_load_today</span></td></tr><tr><td style='text-align:left;' ><span>负荷百分比</span></td><td style='text-align:left;' ><span>t_5_3_work_load_percent</span></td></tr></tbody></table></figure><h4 id='251-工序计划负荷'><span>2.5.1 工序计划负荷</span></h4><p><span> </span><img src="snap/2-5-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_5_1_work_load</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>process_name</span></td><td style='text-align:left;' ><span>工序名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>work_load_1</span></td><td style='text-align:left;' ><span>第1天负荷</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>work_load_x</span></td><td style='text-align:left;' ><span>第x天负荷</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>work_load_7</span></td><td style='text-align:left;' ><span>第7天负荷</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>process_name</span></th><th><span>work_load_1</span></th><th><span>work_load_2</span></th><th><span>work_load_3</span></th><th><span>work_load_4</span></th><th><span>work_load_5</span></th><th><span>work_load_6</span></th><th><span>work_load_7</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>CNC粗</span></td><td><span>101H</span></td><td><span>81H</span></td><td><span>90H</span></td><td><span>120H</span></td><td><span>30H</span></td><td><span>60H</span></td><td><span>120H</span></td></tr><tr><td><span>2</span></td><td><span>CNC精</span></td><td><span>102H</span></td><td><span>102H</span></td><td><span>120H</span></td><td><span>81H</span></td><td><span>45H</span></td><td><span>102H</span></td><td><span>81H</span></td></tr><tr><td><span>3</span></td><td><span>EDM</span></td><td><span>77H</span></td><td><span>102H</span></td><td><span>90H</span></td><td><span>102H</span></td><td><span>45H</span></td><td><span>90H</span></td><td><span>120H</span></td></tr><tr><td><span>4</span></td><td><span>WEDM</span></td><td><span>87H</span></td><td><span>102H</span></td><td><span>120H</span></td><td><span>45H</span></td><td><span>102H</span></td><td><span>102H</span></td><td><span>90H</span></td></tr><tr><td><span>5</span></td><td><span>抛光</span></td><td><span>45H</span></td><td><span>102H</span></td><td><span>102H</span></td><td><span>90H</span></td><td><span>81H</span></td><td><span>81H</span></td><td><span>81H</span></td></tr><tr><td><span>6</span></td><td><span>钳工</span></td><td><span>89H</span></td><td><span>90H</span></td><td><span>45H</span></td><td><span>120H</span></td><td><span>120H</span></td><td><span>120H</span></td><td><span>102H</span></td></tr><tr><td><span>7</span></td><td><span>组装</span></td><td><span>77H</span></td><td><span>90H</span></td><td><span>81H</span></td><td><span>102H</span></td><td><span>45H</span></td><td><span>102H</span></td><td><span>81H</span></td></tr></tbody></table></figure><p><span>表名：t_5_1_work_load_table_head</span>
<span>这个设计很巧妙，相当于动态的日期和数据，日期作为标题。</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>date_1</span></td><td style='text-align:left;' ><span>第1天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_2</span></td><td style='text-align:left;' ><span>第2天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_3</span></td><td style='text-align:left;' ><span>第3天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_4</span></td><td style='text-align:left;' ><span>第4天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_5</span></td><td style='text-align:left;' ><span>第5天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_6</span></td><td style='text-align:left;' ><span>第6天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_7</span></td><td style='text-align:left;' ><span>第7天日期</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>date_1</span></th><th><span>date_2</span></th><th><span>date_3</span></th><th><span>date_4</span></th><th><span>date_5</span></th><th><span>date_6</span></th><th><span>date_7</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>2019-04-30</span></td><td><span>2019-05-01</span></td><td><span>2019-05-02</span></td><td><span>2019-05-03</span></td><td><span>2019-05-04</span></td><td><span>2019-05-05</span></td><td><span>2019-05-06</span></td></tr></tbody></table></figure><h4 id='252-当日负荷'><span>2.5.2 当日负荷</span></h4><p><span> </span><img src="snap/2-5-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_5_2_work_load_today</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>group_name</span></td><td style='text-align:left;' ><span>分组名称</span></td><td style='text-align:left;' ><span>REAL</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>小数位精度1</span></td></tr><tr><td style='text-align:left;' ><span>green</span></td><td style='text-align:left;' ><span>绿色值</span></td><td style='text-align:left;' ><span>REAL</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>小数位精度1</span></td></tr><tr><td style='text-align:left;' ><span>red</span></td><td style='text-align:left;' ><span>红色值</span></td><td style='text-align:left;' ><span>REAL</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>小数位精度1</span></td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>group_name</span></th><th><span>green</span></th><th><span>red</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>CNC粗</span></td><td><span>20</span></td><td><span>20</span></td></tr><tr><td><span>2</span></td><td><span>CNC精</span></td><td><span>40</span></td><td><span>20</span></td></tr><tr><td><span>3</span></td><td><span>EDM</span></td><td><span>60</span></td><td><span>0</span></td></tr><tr><td><span>4</span></td><td><span>WEDM</span></td><td><span>30.2</span></td><td><span>2</span></td></tr><tr><td><span>5</span></td><td><span>铣床</span></td><td><span>40</span></td><td><span>0</span></td></tr><tr><td><span>6</span></td><td><span>磨床</span></td><td><span>30</span></td><td><span>50</span></td></tr></tbody></table></figure><h4 id='253-负荷百分比'><span>2.5.3 负荷百分比</span></h4><p><span> </span><img src="snap/2-5-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_5_3_work_load_percent</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>group_name</span></td><td style='text-align:left;' ><span>分组名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_1</span></td><td style='text-align:left;' ><span>第1天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_x</span></td><td style='text-align:left;' ><span>第x天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_7</span></td><td style='text-align:left;' ><span>第7天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>group_name</span></th><th><span>day_1</span></th><th><span>day_2</span></th><th><span>day_3</span></th><th><span>day_4</span></th><th><span>day_5</span></th><th><span>day_6</span></th><th><span>day_7</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>CNC粗</span></td><td><span>70</span></td><td><span>80</span></td><td><span>90</span></td><td><span>70</span></td><td><span>50</span></td><td><span>99</span></td><td><span>80</span></td></tr><tr><td><span>2</span></td><td><span>CNC精</span></td><td><span>120</span></td><td><span>100</span></td><td><span>130</span></td><td><span>140</span></td><td><span>90</span></td><td><span>100</span></td><td><span>85</span></td></tr><tr><td><span>3</span></td><td><span>EDM</span></td><td><span>120</span></td><td><span>100</span></td><td><span>120</span></td><td><span>80</span></td><td><span>90</span></td><td><span>40</span></td><td><span>50</span></td></tr><tr><td><span>4</span></td><td><span>WEDM</span></td><td><span>100</span></td><td><span>120</span></td><td><span>120</span></td><td><span>100</span></td><td><span>100</span></td><td><span>80</span></td><td><span>70</span></td></tr><tr><td><span>5</span></td><td><span>铣床</span></td><td><span>90</span></td><td><span>80</span></td><td><span>75</span></td><td><span>40</span></td><td><span>12</span></td><td><span>30</span></td><td><span>10</span></td></tr><tr><td><span>6</span></td><td><span>磨床</span></td><td><span>80</span></td><td><span>70</span></td><td><span>50</span></td><td><span>60</span></td><td><span>40</span></td><td><span>50</span></td><td><span>30</span></td></tr></tbody></table></figure><h3 id='26-送检合格模块'><span>2.6 送检合格模块</span></h3><p><span> </span><img src="snap/2-6-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>钢件合格率</span></td><td style='text-align:left;' ><span>t_6_1_wp_qual_rate</span></td></tr><tr><td style='text-align:left;' ><span>电极合格率</span></td><td style='text-align:left;' ><span>t_6_2_ele_qual_rate</span></td></tr><tr><td style='text-align:left;' ><span>当天合格率</span></td><td style='text-align:left;' ><span>t_6_3_qual_rate_today</span></td></tr><tr><td style='text-align:left;' ><span>模具零件合格率</span></td><td style='text-align:left;' ><span>t_6_4_mold_qual_rate</span></td></tr></tbody></table></figure><h4 id='261-钢件合格率'><span>2.6.1 钢件合格率</span></h4><p><span> </span><img src="snap/2-6-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_6_1_wp_qual_rate</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>date_1</span></td><td style='text-align:left;' ><span>第1天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_x</span></td><td style='text-align:left;' ><span>第x天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_15</span></td><td style='text-align:left;' ><span>第15天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span>
<span>1, 100, 99, 89, 95, 95, 92, 98, 100, 96, 97, 98, 99, 90, 85, 84</span></p><h4 id='262-电极合格率'><span>2.6.2 电极合格率</span></h4><p><span> </span><img src="snap/2-6-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_6_2_ele_qual_rate</span><span>	</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>date_1</span></td><td style='text-align:left;' ><span>第1天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_x</span></td><td style='text-align:left;' ><span>第x天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>date_15</span></td><td style='text-align:left;' ><span>第15天合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span>
<span>1, 100, 99, 89, 95, 95, 92, 98, 100, 96, 97, 98, 99, 90, 85, 84</span></p><h4 id='263-当天合格率'><span>2.6.3 当天合格率</span></h4><p><span> </span><img src="snap/2-6-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_6_3_qual_rate_today</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>qual_rate</span></td><td style='text-align:left;' ><span>合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：90</span></p><h4 id='264-模具零件合格率'><span>2.6.4 模具零件合格率</span></h4><p><span> </span><img src="snap/2-6-4.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_6_4_mold_qual_rate</span><span>	</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>mold_name</span></td><td style='text-align:left;' ><span>模块名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>qual_rate</span></td><td style='text-align:left;' ><span>合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>mold_name</span></th><th><span>qual_rate</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>IK19001</span></td><td><span>95</span></td></tr><tr><td><span>2</span></td><td><span>IK19002</span></td><td><span>88</span></td></tr><tr><td><span>3</span></td><td><span>IK19003</span></td><td><span>94</span></td></tr><tr><td><span>4</span></td><td><span>IK19004</span></td><td><span>75</span></td></tr><tr><td><span>5</span></td><td><span>IK19005</span></td><td><span>94</span></td></tr><tr><td><span>6</span></td><td><span>IK19006</span></td><td><span>89</span></td></tr></tbody></table></figure><h3 id='27-品质统计模块'><span>2.7 品质统计模块</span></h3><p><span> </span><img src="snap/2-7-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>品质占比</span></td><td style='text-align:left;' ><span>t_7_1_qual_percent</span></td></tr><tr><td style='text-align:left;' ><span>班组合格率</span></td><td style='text-align:left;' ><span>t_7_2_group_qual_rate</span></td></tr><tr><td style='text-align:left;' ><span>每日合格率统计</span></td><td style='text-align:left;' ><span>t_7_3_qual_rate_daily</span></td></tr></tbody></table></figure><h4 id='271-品质占比'><span>2.7.1 品质占比 </span></h4><p><span> </span><img src="snap/2-7-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_7_1_qual_percent</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>green</span></td><td style='text-align:left;' ><span>绿色百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>blue</span></td><td style='text-align:left;' ><span>蓝色百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>yellow</span></td><td style='text-align:left;' ><span>黄色百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>red</span></td><td style='text-align:left;' ><span>红色百分比</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span>
<span>1</span><span>	</span><span>45</span><span>	</span><span>30</span><span>	</span><span>15</span><span>	</span><span>10</span></p><h4 id='272-班组合格率'><span>2.7.2 班组合格率 </span></h4><p><span> </span><img src="snap/2-7-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_7_2_group_qual_rate</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>group_name</span></td><td style='text-align:left;' ><span>分组名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>qual_rate</span></td><td style='text-align:left;' ><span>合格率</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>group_name</span></th><th><span>qual_rate</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>CNC</span></td><td><span>90</span></td></tr><tr><td><span>2</span></td><td><span>EDM</span></td><td><span>85</span></td></tr><tr><td><span>3</span></td><td><span>WEDM</span></td><td><span>92</span></td></tr><tr><td><span>4</span></td><td><span>磨床</span></td><td><span>94</span></td></tr><tr><td><span>5</span></td><td><span>铣床</span></td><td><span>93</span></td></tr><tr><td><span>6</span></td><td><span>外协</span></td><td><span>92</span></td></tr></tbody></table></figure><h4 id='273-每日合格率统计'><span>2.7.3 每日合格率统计</span></h4><p><span> </span><img src="snap/2-7-3.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_7_3_qual_rate_daily</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>group_name</span></td><td style='text-align:left;' ><span>分组名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_1</span></td><td style='text-align:left;' ><span>第1天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_x</span></td><td style='text-align:left;' ><span>第x天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>day_31</span></td><td style='text-align:left;' ><span>第31天</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>3</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span>
<span>1, &#39;all&#39;, 90, 90, 97, 91, 92, 88, 89, 90, 78, 87, 86, 90, 80, 97, 87, 87, 88, 89, 90, 90, 89, 86, 90, 80, 97, 87, 87, 89, 89, 89, 90</span></p><h3 id='28-物料管理模块'><span>2.8 物料管理模块</span></h3><p><span> </span><img src="snap/2-8-0.jpg" referrerpolicy="no-referrer"></p><p><span>子模块表名对应表：</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>子模块标题</span></th><th style='text-align:left;' ><span>子模块表名</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>库存占比</span></td><td style='text-align:left;' ><span>t_8_1_key_invt</span></td></tr><tr><td style='text-align:left;' ><span>主要零件库存</span></td><td style='text-align:left;' ><span>t_8_2_invt_table</span></td></tr></tbody></table></figure><h4 id='281-库存占比'><span>2.8.1 库存占比</span></h4><p><span> </span><img src="snap/2-8-1.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_8_1_key_invt</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>名称</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>upper_bound</span></td><td style='text-align:left;' ><span>上限</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>current</span></td><td style='text-align:left;' ><span>库存</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>name</span></th><th><span>upper_bound</span></th><th><span>current</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>刀具A1</span></td><td><span>200</span></td><td><span>110</span></td></tr><tr><td><span>2</span></td><td><span>顶针B</span></td><td><span>100</span></td><td><span>70</span></td></tr><tr><td><span>3</span></td><td><span>线割丝C</span></td><td><span>100</span></td><td><span>300</span></td></tr><tr><td><span>4</span></td><td><span>树脂D</span></td><td><span>100</span></td><td><span>10</span></td></tr></tbody></table></figure><h4 id='282-主要零件库存'><span>2.8.2 主要零件库存</span></h4><p><span> </span><img src="snap/2-8-2.jpg" referrerpolicy="no-referrer"></p><p><span>表名：t_8_2_invt_table</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段名</span></th><th style='text-align:left;' ><span>中文名</span></th><th style='text-align:left;' ><span>类型</span></th><th style='text-align:left;' ><span>长度</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>internal_id</span></td><td style='text-align:left;' ><span>序号</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' ><span>主键自增</span></td></tr><tr><td style='text-align:left;' ><span>invt_no</span></td><td style='text-align:left;' ><span>编号</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>name</span></td><td style='text-align:left;' ><span>品名</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>spec</span></td><td style='text-align:left;' ><span>规格</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>mat</span></td><td style='text-align:left;' ><span>材料</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>size</span></td><td style='text-align:left;' ><span>尺寸</span></td><td style='text-align:left;' ><span>VARCHAR</span></td><td style='text-align:left;' ><span>255</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>target</span></td><td style='text-align:left;' ><span>目标库存</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>current</span></td><td style='text-align:left;' ><span>当前库存</span></td><td style='text-align:left;' ><span>INTEGER</span></td><td style='text-align:left;' ><span>11</span></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><span>默认数据：</span></p><figure class='table-figure'><table><thead><tr><th><span>internal_id</span></th><th><span>invt_no</span></th><th><span>name</span></th><th><span>spec</span></th><th><span>mat</span></th><th><span>size</span></th><th><span>target</span></th><th><span>current</span></th></tr></thead><tbody><tr><td><span>1</span></td><td><span>SSDDS1</span></td><td><span>品名1</span></td><td><span>规格1</span></td><td><span>材料1</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>200</span></td><td><span>90</span></td></tr><tr><td><span>2</span></td><td><span>SSDDS2</span></td><td><span>品名2</span></td><td><span>规格2</span></td><td><span>材料2</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>120</span></td></tr><tr><td><span>3</span></td><td><span>SSDDS3</span></td><td><span>品名3</span></td><td><span>规格3</span></td><td><span>材料3</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>67</span></td></tr><tr><td><span>4</span></td><td><span>SSDDS4</span></td><td><span>品名4</span></td><td><span>规格4</span></td><td><span>材料4</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>88</span></td></tr><tr><td><span>5</span></td><td><span>SSDDS5</span></td><td><span>品名5</span></td><td><span>规格5</span></td><td><span>材料5</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>45</span></td></tr><tr><td><span>6</span></td><td><span>SSDDS6</span></td><td><span>品名6</span></td><td><span>规格6</span></td><td><span>材料6</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>87</span></td></tr><tr><td><span>7</span></td><td><span>SSDDS7</span></td><td><span>品名7</span></td><td><span>规格7</span></td><td><span>材料7</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>9</span></td></tr><tr><td><span>8</span></td><td><span>SSDDS8</span></td><td><span>品名8</span></td><td><span>规格8</span></td><td><span>材料8</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>44</span></td></tr><tr><td><span>9</span></td><td><span>SSDDS9</span></td><td><span>品名9</span></td><td><span>规格9</span></td><td><span>材料9</span></td><td><span>34</span><em><span>54</span></em><span>20</span></td><td><span>100</span></td><td><span>100</span></td></tr></tbody></table></figure><h2 id='3-配置参数说明'><span>3 配置参数说明</span></h2><h3 id='31-基本配置1'><span>3.1 基本配置1</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>IndexStart</span></td><td style='text-align:left;' ><span>启动窗体索引 0-大屏系统 1-控件演示 2-模块演示</span></td><td style='text-align:left;' ><span>0-大屏系统</span></td></tr><tr><td style='text-align:left;' ><span>IndexControl</span></td><td style='text-align:left;' ><span>控件演示窗体选中子窗体索引</span></td><td style='text-align:left;' ><span>0</span></td></tr><tr><td style='text-align:left;' ><span>IndexModule</span></td><td style='text-align:left;' ><span>模块演示窗体选中子窗体索引</span></td><td style='text-align:left;' ><span>0</span></td></tr><tr><td style='text-align:left;' ><span>WorkMode</span></td><td style='text-align:left;' ><span>工作模式</span></td><td style='text-align:left;' ><span>timer</span></td></tr><tr><td style='text-align:left;' ><span>MapStyle</span></td><td style='text-align:left;' ><span>中间地图样式</span></td><td style='text-align:left;' ><span>point</span></td></tr><tr><td style='text-align:left;' ><span>Title</span></td><td style='text-align:left;' ><span>软件标题，默认值：数字化工厂信息中心</span></td><td style='text-align:left;' >&nbsp;</td></tr><tr><td style='text-align:left;' ><span>Ratio</span></td><td style='text-align:left;' ><span>分辨率，目前无意义，备用参数</span></td><td style='text-align:left;' ><span>1920*1080</span></td></tr><tr><td style='text-align:left;' ><span>Layout</span></td><td style='text-align:left;' ><span>布局方案，每次切换布局方案以后都会保存</span></td><td style='text-align:left;' ><span>完整布局</span></td></tr><tr><td style='text-align:left;' ><span>Theme</span></td><td style='text-align:left;' ><span>配色方案，每次切换配色方案以后都会保存</span></td><td style='text-align:left;' ><span>紫色风格</span></td></tr><tr><td style='text-align:left;' ><span>HttpUrl</span></td><td style='text-align:left;' ><span>网络请求地址，默认</span><a href='http://127.0.0.1:6000' target='_blank' class='url'>http://127.0.0.1:6000</a></td><td style='text-align:left;' >&nbsp;</td></tr></tbody></table></figure><p><strong><span>工作模式</span></strong></p><ul><li><p><span>timer-模拟数据</span></p></li><li><p><span>db-数据库采集</span></p></li><li><p><span>com-串口采集</span></p></li><li><p><span>tcp-网络采集</span></p></li><li><p><span>http-post请求</span></p></li></ul><p><strong><span>地图样式</span></strong></p><ul><li><p><span>image-静态图片</span></p></li><li><p><span>point-闪烁效果</span></p></li><li><p><span>move-迁徙效果</span></p></li><li><p><span>world-世界地图</span></p></li><li><p><span>area-区域地图</span></p></li></ul><h3 id='32-基本设置2'><span>3.2 基本设置2</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>AutoRun</span></td><td style='text-align:left;' ><span>是否开机启动</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>MoveEnable</span></td><td style='text-align:left;' ><span>模块是否可以拖动，启用以后模块可以任意拖动</span></td><td style='text-align:left;' ><span>true</span></td></tr><tr><td style='text-align:left;' ><span>CutLeftBottom</span></td><td style='text-align:left;' ><span>底部布局左侧是否切掉</span></td><td style='text-align:left;' ><span>true</span></td></tr><tr><td style='text-align:left;' ><span>CutRightBottom</span></td><td style='text-align:left;' ><span>底部布局右侧是否切掉</span></td><td style='text-align:left;' ><span>true</span></td></tr><tr><td style='text-align:left;' ><span>StaticLine</span></td><td style='text-align:left;' ><span>是否绘制静态定位线，为假则绘制游标十字线</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>ShowPercent</span></td><td style='text-align:left;' ><span>Y轴是否显示百分比</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>StepY</span></td><td style='text-align:left;' ><span>Y轴大尺度步长</span></td><td style='text-align:left;' ><span>6</span></td></tr><tr><td style='text-align:left;' ><span>CursorHideTime</span></td><td style='text-align:left;' ><span>用户不操作鼠标自动隐藏鼠标的时间间隔，单位秒</span></td><td style='text-align:left;' ><span>5</span></td></tr></tbody></table></figure><h3 id='33-视频设置'><span>3.3 视频设置</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>VideoFillImage</span></td><td style='text-align:left;' ><span>视频缩放，拉伸填充整个窗体</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>VideoCallback</span></td><td style='text-align:left;' ><span>视频回调，开启后采用painter走GPU绘制视频</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>VideoPlayAudio</span></td><td style='text-align:left;' ><span>播放音频，开启后视频同步播放音频</span></td><td style='text-align:left;' ><span>true</span></td></tr><tr><td style='text-align:left;' ><span>VideoPlayRepeat</span></td><td style='text-align:left;' ><span>视频循环播放，开启后视频会循环播放</span></td><td style='text-align:left;' ><span>false</span></td></tr><tr><td style='text-align:left;' ><span>VideoUrl</span></td><td style='text-align:left;' ><span>视频流地址，视频模块播放的视频地址</span></td><td style='text-align:left;' ><span>变动的</span></td></tr></tbody></table></figure><h3 id='34-颜色配置1'><span>3.4 颜色配置1</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>ColorMainBg</span></td><td style='text-align:left;' ><span>主背景颜色</span></td><td style='text-align:left;' ><span>QColor(4, 7, 38)</span></td></tr><tr><td style='text-align:left;' ><span>ColorPanelBg</span></td><td style='text-align:left;' ><span>面板背景颜色</span></td><td style='text-align:left;' ><span>QColor(26, 29, 60)</span></td></tr><tr><td style='text-align:left;' ><span>ColorLine</span></td><td style='text-align:left;' ><span>十字线定位线颜色</span></td><td style='text-align:left;' ><span>QColor(255, 0, 0)</span></td></tr><tr><td style='text-align:left;' ><span>ColorLine1</span></td><td style='text-align:left;' ><span>线条1颜色</span></td><td style='text-align:left;' ><span>QColor(0, 176, 180)</span></td></tr><tr><td style='text-align:left;' ><span>ColorLine2</span></td><td style='text-align:left;' ><span>线条2颜色</span></td><td style='text-align:left;' ><span>QColor(32, 159, 223)</span></td></tr><tr><td style='text-align:left;' ><span>ColorLine3</span></td><td style='text-align:left;' ><span>线条3颜色</span></td><td style='text-align:left;' ><span>QColor(255, 192, 0)</span></td></tr></tbody></table></figure><h3 id='35-颜色配置2'><span>3.5 颜色配置2</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>ColorTitleBg</span></td><td style='text-align:left;' ><span>标题栏背景颜色</span></td><td style='text-align:left;' ><span>QColor(48, 48, 85)</span></td></tr><tr><td style='text-align:left;' ><span>ColorTitleText</span></td><td style='text-align:left;' ><span>标题栏文字颜色</span></td><td style='text-align:left;' ><span>QColor(255, 255, 255)</span></td></tr><tr><td style='text-align:left;' ><span>ColorChartBg</span></td><td style='text-align:left;' ><span>曲线图表背景颜色</span></td><td style='text-align:left;' ><span>QColor(38, 41, 74)</span></td></tr><tr><td style='text-align:left;' ><span>ColorChartText</span></td><td style='text-align:left;' ><span>曲线图表文字颜色</span></td><td style='text-align:left;' ><span>QColor(250, 250, 250)</span></td></tr><tr><td style='text-align:left;' ><span>ColorChartGrid</span></td><td style='text-align:left;' ><span>曲线图表网格颜色</span></td><td style='text-align:left;' ><span>QColor(180, 180, 180)</span></td></tr></tbody></table></figure><h3 id='36-颜色配置3'><span>3.6 颜色配置3</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>ColorOk</span></td><td style='text-align:left;' ><span>正常颜色</span></td><td style='text-align:left;' ><span>QColor(0, 176, 180)</span></td></tr><tr><td style='text-align:left;' ><span>ColorLow</span></td><td style='text-align:left;' ><span>警戒颜色</span></td><td style='text-align:left;' ><span>QColor(255, 192, 0)</span></td></tr><tr><td style='text-align:left;' ><span>ColorAlarm</span></td><td style='text-align:left;' ><span>报警颜色</span></td><td style='text-align:left;' ><span>QColor(214, 77, 84)</span></td></tr><tr><td style='text-align:left;' ><span>ColorDisable</span></td><td style='text-align:left;' ><span>禁用背景颜色</span></td><td style='text-align:left;' ><span>QColor(210, 210, 210)</span></td></tr><tr><td style='text-align:left;' ><span>ColorPercent</span></td><td style='text-align:left;' ><span>环形百分比背景颜色</span></td><td style='text-align:left;' ><span>QColor(0, 254, 254)</span></td></tr></tbody></table></figure><h3 id='37-字体配置'><span>3.7 字体配置</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>MainFont</span></td><td style='text-align:left;' ><span>全局字号</span></td><td style='text-align:left;' ><span>微软雅黑，12</span></td></tr><tr><td style='text-align:left;' ><span>NameFont</span></td><td style='text-align:left;' ><span>软件名称字号</span></td><td style='text-align:left;' ><span>19</span></td></tr><tr><td style='text-align:left;' ><span>LabFont</span></td><td style='text-align:left;' ><span>加粗标签字号</span></td><td style='text-align:left;' ><span>12</span></td></tr><tr><td style='text-align:left;' ><span>DeviceFont</span></td><td style='text-align:left;' ><span>设备面板字号</span></td><td style='text-align:left;' ><span>12</span></td></tr><tr><td style='text-align:left;' ><span>SubTitleFont</span></td><td style='text-align:left;' ><span>模块子标题栏字号</span></td><td style='text-align:left;' ><span>13</span></td></tr><tr><td style='text-align:left;' ><span>TitleFont</span></td><td style='text-align:left;' ><span>模块标题栏字号</span></td><td style='text-align:left;' ><span>15</span></td></tr></tbody></table></figure><h3 id='38-尺寸配置'><span>3.8 尺寸配置</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>TitleHeight</span></td><td style='text-align:left;' ><span>模块标题栏高度</span></td><td style='text-align:left;' ><span>23</span></td></tr><tr><td style='text-align:left;' ><span>HeadHeight</span></td><td style='text-align:left;' ><span>表格表头高度</span></td><td style='text-align:left;' ><span>28</span></td></tr><tr><td style='text-align:left;' ><span>RowHeight</span></td><td style='text-align:left;' ><span>表格行高度</span></td><td style='text-align:left;' ><span>25</span></td></tr><tr><td style='text-align:left;' ><span>LayoutSpacing</span></td><td style='text-align:left;' ><span>布局空隙间隔</span></td><td style='text-align:left;' ><span>6</span></td></tr><tr><td style='text-align:left;' ><span>SwitchBtnWidth</span></td><td style='text-align:left;' ><span>开关按钮宽度</span></td><td style='text-align:left;' ><span>65</span></td></tr><tr><td style='text-align:left;' ><span>SwitchBtnHeight</span></td><td style='text-align:left;' ><span>开关按钮高度</span></td><td style='text-align:left;' ><span>26</span></td></tr><tr><td style='text-align:left;' ><span>ScrollWidth</span></td><td style='text-align:left;' ><span>滚动条宽度</span></td><td style='text-align:left;' ><span>15</span></td></tr></tbody></table></figure><h3 id='39-采集速度'><span>3.9 采集速度</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>IntervalModule1</span></td><td style='text-align:left;' ><span>模块1采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5000</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule2</span></td><td style='text-align:left;' ><span>模块2采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5100</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule3</span></td><td style='text-align:left;' ><span>模块3采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5200</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule4</span></td><td style='text-align:left;' ><span>模块4采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5300</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule5</span></td><td style='text-align:left;' ><span>模块5采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5400</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule6</span></td><td style='text-align:left;' ><span>模块6采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5500</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule7</span></td><td style='text-align:left;' ><span>模块7采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5600</span></td></tr><tr><td style='text-align:left;' ><span>IntervalModule8</span></td><td style='text-align:left;' ><span>模块8采集间隔，单位毫秒</span></td><td style='text-align:left;' ><span>5700</span></td></tr></tbody></table></figure><h3 id='310-数据库配置'><span>3.10 数据库配置</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>字段</span></th><th style='text-align:left;' ><span>描述</span></th><th style='text-align:left;' ><span>默认值</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>LocalDBType</span></td><td style='text-align:left;' ><span>本地数据库类型，Sqlite、Mysql等</span></td><td style='text-align:left;' ><span>Sqlite</span></td></tr><tr><td style='text-align:left;' ><span>LocalDBIP</span></td><td style='text-align:left;' ><span>本地数据库主机地址</span></td><td style='text-align:left;' ><span>127.0.0.1</span></td></tr><tr><td style='text-align:left;' ><span>LocalDBPort</span></td><td style='text-align:left;' ><span>本地数据库端口</span></td><td style='text-align:left;' ><span>3306</span></td></tr><tr><td style='text-align:left;' ><span>LocalDBName</span></td><td style='text-align:left;' ><span>本地数据库名称</span></td><td style='text-align:left;' ><span>bigscreen</span></td></tr><tr><td style='text-align:left;' ><span>LocalUserName</span></td><td style='text-align:left;' ><span>本地数据库用户名</span></td><td style='text-align:left;' ><span>root</span></td></tr><tr><td style='text-align:left;' ><span>LocalUserPwd</span></td><td style='text-align:left;' ><span>本地数据库密码，以密文存储</span></td><td style='text-align:left;' ><span>root</span></td></tr></tbody></table></figure><h2 id='4-程序框架说明'><span>4 程序框架说明</span></h2><h3 id='41-整体代码结构'><span>4.1 整体代码结构</span></h3><p><span> </span><img src="snap/4-1-1.jpg" referrerpolicy="no-referrer"></p><p><span>整个大屏系统就是由一个个子模块组成，每个子模块都用到了一些自定义控件，再打通数据库采集和网络请求采集等，将采集到的数据设置到对应的模块界面上。</span></p><h3 id='42-主模块说明'><span>4.2 主模块说明</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>主模块</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>3rd</span></td><td style='text-align:left;' ><span>一些第三方开源的类库，比如图表qcustomplot。</span></td></tr><tr><td style='text-align:left;' ><span>class</span></td><td style='text-align:left;' ><span>存放系统初始化、样式控制、自定义控件等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>本人一直持续更新完善的通用的类库，比如ffmpeg视频监控。</span></td></tr><tr><td style='text-align:left;' ><span>ui</span></td><td style='text-align:left;' ><span>所有的界面都分门别类放在这里。</span></td></tr></tbody></table></figure><h3 id='43-子模块说明'><span>4.3 子模块说明</span></h3><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>主模块</span></th><th style='text-align:left;' ><span>子模块</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>3rd</span></td><td style='text-align:left;' ><span>3rd_qcustomplot</span></td><td style='text-align:left;' ><span>大名鼎鼎的第三方开源的图表组件。</span></td></tr><tr><td style='text-align:left;' ><span>class</span></td><td style='text-align:left;' ><span>api</span></td><td style='text-align:left;' ><span>存放数据库表映射成对应的全局队列数据、通用的辅助函数类。</span></td></tr><tr><td style='text-align:left;' ><span>class</span></td><td style='text-align:left;' ><span>app</span></td><td style='text-align:left;' ><span>全局配置参数管理类、秘钥管理类、通用函数。</span></td></tr><tr><td style='text-align:left;' ><span>class</span></td><td style='text-align:left;' ><span>usercontrol</span></td><td style='text-align:left;' ><span>当前系统的自定义控件全部放在这里，其中包括自定义饼图控件、进度仪表盘、百分比仪表盘、环形进度条、三态进度条等控件。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_common</span></td><td style='text-align:left;' ><span>通用函数，包括通用秘钥、通用导航、通用样式、声音播放、日志记录、运行时间记录等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_control</span></td><td style='text-align:left;' ><span>通用自定义控件，很多系统经常用到的控件全部放在这里。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_customplot</span></td><td style='text-align:left;' ><span>继承自qcustomplot类的自定义图表组件，专为大屏系统定制的各种图表组件。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_db</span></td><td style='text-align:left;' ><span>数据库集成应用组件，比如数据库管理线程类、数据库清理线程类、数据库采集类、网络请求采集类等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_form</span></td><td style='text-align:left;' ><span>通用的用户登录、用户退出、用户管理、数据库配置界面类等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_map</span></td><td style='text-align:left;' ><span>地图内核，包括了百度echart封装类，区域轮廓数据转换js函数封装类，百度地图封装类等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_qthelper</span></td><td style='text-align:left;' ><span>通用的辅助类，包括自定义对话框，全局辅助函数，图形字体等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_audio</span></td><td style='text-align:left;' ><span>音频播放和录制，包括音频输入输出设备管理、音频播放、音频录制、音频振幅控件等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_video</span></td><td style='text-align:left;' ><span>视频播放核心类，包括了监控画面切换控件、视频回放控件、视频播放组件结构体、视频播放辅助函数、视频解码线程类、视频显示控件类等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_videobase</span></td><td style='text-align:left;' ><span>视频相关基类，包括音视频文件保存基类、视频解码基类、视频控件基类、视频悬浮工具栏、视频控件结构体等。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_videoffmpeg</span></td><td style='text-align:left;' ><span>视频监控内核ffmpeg版本，本系统默认采用的内核。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_videoopengl</span></td><td style='text-align:left;' ><span>opengl封装类，支持打开yuv/nv12文件，绘制yuv/nv12帧数据，一般搭配ffmpeg视频内核显示视频，直接走GPU绘制。</span></td></tr><tr><td style='text-align:left;' ><span>core</span></td><td style='text-align:left;' ><span>core_webview</span></td><td style='text-align:left;' ><span>通用浏览器控件类，同时支持webkit、wenengine、miniblink三种内核，打通了所有的Qt版本。</span></td></tr><tr><td style='text-align:left;' ><span>ui</span></td><td style='text-align:left;' ><span>frmconfig</span></td><td style='text-align:left;' ><span>系统设置界面，包括常规设置、数据库设置、采集间隔设置、视频参数设置等。</span></td></tr><tr><td style='text-align:left;' ><span>ui</span></td><td style='text-align:left;' ><span>frmcontrol</span></td><td style='text-align:left;' ><span>大屏控件演示示例，每个功能演示都是个独立的窗体，方便查看代码学习如何使用。</span></td></tr><tr><td style='text-align:left;' ><span>ui</span></td><td style='text-align:left;' ><span>frmmain</span></td><td style='text-align:left;' ><span>主界面模块，包括了系统配置界面、大屏主界面、大屏指定分辨率用于截图的主界面、设备面板窗体。</span></td></tr><tr><td style='text-align:left;' ><span>ui</span></td><td style='text-align:left;' ><span>frmmodule</span></td><td style='text-align:left;' ><span>大屏子模块，包括了产量汇总、当月计划、设备监控、模具进度、负荷分布、送检合格率、品质管理、物料管理、视频监控、大屏地图等。</span></td></tr></tbody></table></figure><h3 id='44-辅助处理'><span>4.4 辅助处理</span></h3><h4 id='441-数据库表映射'><span>4.4.1 数据库表映射</span></h4><p><span> </span><img src="snap/4-4-1.jpg" referrerpolicy="no-referrer"></p><p><span>将对应的用户表映射到变量队列存储，以便用户登录和整体判断权限等。</span></p><h4 id='442-通用辅助函数类'><span>4.4.2 通用辅助函数类</span></h4><p><span>这个类就像万能胶一样，在本人写的所有的项目中都有，本类就是将平时常用的一些通用函数都丢在这里，不断完善和持续改进，包括了16进制数据转换、图形字体设置、自定义消息框、错误框、提示框等，集成设置窗体居中显示、设置翻译文件、设置编码、设置延时、设置系统时间等静态方法。</span></p><pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="cpp" style="break-inside: unset;"><div class="CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap" lang="cpp"><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 9.51875px; left: 53px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 45px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><span><span>​</span>x</span></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -45px; width: 45px;"></div><div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">1</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#ifndef QTHELPER_H</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">2</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#define QTHELPER_H</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">3</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">4</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#include "globalhead.h"</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">5</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#include "globalconfig.h"</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">6</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#include "qtabout.h"</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">7</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">8</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">class</span> <span class="cm-def">QtHelper</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">9</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">{</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">10</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-keyword">public</span>:</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">11</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取当前鼠标所在屏幕索引+尺寸</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">12</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">getScreenIndex</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">13</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QRect</span> <span class="cm-variable">getScreenRect</span>(<span class="cm-variable-3">bool</span> <span class="cm-variable">available</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">14</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">15</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取桌面宽度高度</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">16</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">deskWidth</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">17</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">deskHeight</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">18</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QSize</span> <span class="cm-variable">deskSize</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">19</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">20</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//居中显示窗体</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">21</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//定义标志位指定是以桌面为参照还是主程序界面为参照</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">22</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">centerBaseForm</span>;</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">23</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFormInCenter</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">form</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">24</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showForm</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">form</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">25</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">26</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//程序文件名称及所在路径</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">27</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">appName</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">28</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">appPath</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">29</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">30</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取编译器字符串</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">31</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getCompilerString</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">32</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取uuid</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">33</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getUuid</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">34</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">35</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//新建目录</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">36</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">newDir</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dirName</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">37</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//通用延时函数 支持Qt4 Qt5 Qt6</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">38</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">sleep</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">msec</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">39</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">40</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置编码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">41</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setCode</span>(<span class="cm-variable-3">bool</span> <span class="cm-variable">utf8</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">42</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置字体</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">43</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QFont</span> <span class="cm-variable">addFont</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fontFile</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fontName</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">44</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFont</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fontFile</span> <span class="cm-operator">=</span> <span class="cm-string">":/font/DroidSansFallback.ttf"</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">45</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fontName</span> <span class="cm-operator">=</span> <span class="cm-variable">QUIConfig::FontName</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">46</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">int</span> <span class="cm-variable">fontSize</span> <span class="cm-operator">=</span> <span class="cm-variable">QUIConfig::FontSize</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">47</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置翻译文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">48</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setTranslator</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">49</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setTranslator</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">qmFile</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">50</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">51</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//一次性设置所有包括编码字体翻译等</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">52</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initAll</span>(<span class="cm-variable-3">bool</span> <span class="cm-variable">utf8</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">53</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//初始化main函数最前面执行的一段代码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">54</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initMain</span>(<span class="cm-variable-3">bool</span> <span class="cm-variable">on</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">55</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">56</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//16进制字符串转10进制</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">57</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">strHexToDecimal</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">strHex</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">58</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//10进制字符串转10进制</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">59</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">strDecimalToDecimal</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">strDecimal</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">60</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//2进制字符串转10进制</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">61</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">strBinToDecimal</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">strBin</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">62</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">63</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//16进制字符串转2进制字符串</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">64</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">strHexToStrBin</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">strHex</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">65</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//10进制转2进制字符串一个字节</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">66</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">decimalToStrBin1</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">decimal</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">67</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//10进制转2进制字符串两个字节</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">68</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">decimalToStrBin2</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">decimal</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">69</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//10进制转16进制字符串,补零.</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">70</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">decimalToStrHex</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">decimal</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">71</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">72</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//int转字节数组</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">73</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">intToByte</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">74</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">intToByteRec</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">75</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">76</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//字节数组转int</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">77</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">byteToInt</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">78</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">byteToIntRec</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">79</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">quint32</span> <span class="cm-variable">byteToUInt</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">80</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">quint32</span> <span class="cm-variable">byteToUIntRec</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">81</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">82</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//ushort转字节数组</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">83</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">ushortToByte</span>(<span class="cm-variable">ushort</span> <span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">84</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">ushortToByteRec</span>(<span class="cm-variable">ushort</span> <span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">85</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">86</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//字节数组转ushort</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">87</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">byteToUShort</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">88</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">byteToUShortRec</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">89</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">90</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//字符串补全</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">91</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getValue</span>(<span class="cm-variable">quint8</span> <span class="cm-variable">value</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">92</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//字符串去空格 -1=移除左侧空格 0=移除所有空格 1=移除右侧空格 2=移除首尾空格 3=首尾清除中间留一个空格</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">93</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">trimmed</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">text</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">type</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">94</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">95</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//异或加密-只支持字符,如果是中文需要将其转换base64编码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">96</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getXorEncryptDecrypt</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">value</span>, <span class="cm-variable-3">char</span> <span class="cm-variable">key</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">97</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//异或校验</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">98</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">uchar</span> <span class="cm-variable">getOrCode</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">99</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//计算校验码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">100</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">uchar</span> <span class="cm-variable">getCheckCode</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">101</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">102</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//CRC校验</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">103</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">getCrcCode</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">104</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">105</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//字节数组与Ascii字符串互转</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">106</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">byteArrayToAsciiStr</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">107</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">asciiStrToByteArray</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">108</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">109</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//16进制字符串与字节数组互转</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">110</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">hexStrToByteArray</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">111</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">byteArrayToHexStr</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QByteArray</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">112</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">113</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//选择文件对话框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">114</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getOpenFileName</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">filter</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">115</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dirName</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">116</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fileName</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">117</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">native</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">width</span> <span class="cm-operator">=</span> <span class="cm-number">900</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">height</span> <span class="cm-operator">=</span> <span class="cm-number">600</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">118</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//保存文件对话框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">119</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getSaveFileName</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">filter</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">120</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dirName</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">121</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fileName</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">122</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">native</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">width</span> <span class="cm-operator">=</span> <span class="cm-number">900</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">height</span> <span class="cm-operator">=</span> <span class="cm-number">600</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">123</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//选择目录对话框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">124</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getExistingDirectory</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dirName</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(),</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">125</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">bool</span> <span class="cm-variable">native</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">width</span> <span class="cm-operator">=</span> <span class="cm-number">900</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">height</span> <span class="cm-operator">=</span> <span class="cm-number">600</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">126</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">127</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取文件名,含拓展名</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">128</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getFileNameWithExtension</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fileName</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">129</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取选择文件夹中的文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">130</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QStringList</span> <span class="cm-variable">getFolderFileNames</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QStringList</span> <span class="cm-operator">&amp;</span><span class="cm-variable">filter</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">131</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">132</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//复制文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">133</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">copyFile</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">sourceFile</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">targetFile</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">134</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//删除文件夹下所有文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">135</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">deleteDirectory</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">path</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">136</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">137</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//从字符串获取IP地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">138</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getIP</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">url</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">139</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//判断是否是IP地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">140</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">isIP</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">ip</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">141</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//判断是否是MAC地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">142</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">isMac</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">mac</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">143</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//判断是否是合法的电话号码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">144</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">isTel</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">tel</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">145</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//判断是否是合法的邮箱地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">146</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">isEmail</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">email</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">147</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">148</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//IP地址字符串与整型转换</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">149</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">ipv4IntToString</span>(<span class="cm-variable">quint32</span> <span class="cm-variable">ip</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">150</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">quint32</span> <span class="cm-variable">ipv4StringToInt</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">ip</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">151</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">152</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//判断IP地址及端口是否在线</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">153</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">ipLive</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">ip</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">port</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">1000</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">154</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//下载网络文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">155</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">download</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">url</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fileName</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">1000</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">156</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取网页所有源代码</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">157</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QByteArray</span> <span class="cm-variable">getHtml</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">url</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">1000</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">158</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">159</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取本机公网IP地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">160</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getNetIP</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">html</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">161</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取本机IP</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">162</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">getLocalIP</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">163</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取本机IP地址集合</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">164</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QStringList</span> <span class="cm-variable">getLocalIPs</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">165</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//Url地址转为IP地址</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">166</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">urlToIP</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">url</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">167</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">168</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置边框阴影</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">169</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFormShadow</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">widget</span>, <span class="cm-variable">QLayout</span> <span class="cm-operator">*</span><span class="cm-variable">layout</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">color</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">margin</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">radius</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">170</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//立即更新所有阴影边框颜色比如换肤的时候需要用到</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">171</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFormShadow</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">color</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">172</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">173</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置无边框窗体</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">174</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFramelessForm</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">widgetMain</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">175</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">tool</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">top</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">176</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">menu</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">x11</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">177</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setFramelessForm</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">widgetMain</span>, <span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">widgetTitle</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">178</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable">QLabel</span> <span class="cm-operator">*</span><span class="cm-variable">labIco</span>, <span class="cm-variable">QPushButton</span> <span class="cm-operator">*</span><span class="cm-variable">btnClose</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">179</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">tool</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">top</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">180</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">menu</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">x11</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">181</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">182</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//通用弹出框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">183</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">showMessageBox</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">type</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">exec</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">184</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出消息框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">185</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showMessageBoxInfo</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">exec</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">186</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出错误框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">187</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showMessageBoxError</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">exec</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">188</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出询问框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">189</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">showMessageBoxQuestion</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">190</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">191</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出右下角信息框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">192</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showTipBox</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">title</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">tip</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">fullScreen</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">193</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">center</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">194</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//隐藏右下角信息框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">195</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">hideTipBox</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">196</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">197</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出输入框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">198</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">showInputBox</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">title</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">type</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">199</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">placeholderText</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(), <span class="cm-variable-3">bool</span> <span class="cm-variable">pwd</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">200</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">defaultValue</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>());</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">201</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出日期选择框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">202</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">int</span> <span class="cm-variable">showDateSelect</span>(<span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dateStart</span>, <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dateEnd</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">format</span> <span class="cm-operator">=</span> <span class="cm-string">"yyyy-MM-dd"</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">203</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">204</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出关于对话框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">205</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showAboutInfo</span>(<span class="cm-keyword">const</span> <span class="cm-variable">AboutInfo</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">exec</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">206</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//弹出中间提示框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">207</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">showSplashInfo</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">fontSizeMain</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">fontSizeSub</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">timeout</span> <span class="cm-operator">=</span> <span class="cm-number">0</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">exec</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">208</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//隐藏中间提示框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">209</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">hideSplashInfo</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">210</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">211</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取等比例缩放过的图片</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">212</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QPixmap</span> <span class="cm-variable">getPixmap</span>(<span class="cm-variable">QWidget</span> <span class="cm-operator">*</span><span class="cm-variable">widget</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QPixmap</span> <span class="cm-operator">&amp;</span><span class="cm-variable">pixmap</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">scale</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">213</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setPixmap</span>(<span class="cm-variable">QLabel</span> <span class="cm-operator">*</span><span class="cm-variable">label</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">file</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">scale</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">214</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置logo图片支持 资源文件+本地图片+图形字体+svg自动变色 等多种形式</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">215</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setLogo</span>(<span class="cm-variable">QLabel</span> <span class="cm-operator">*</span><span class="cm-variable">label</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">file</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">216</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">int</span> <span class="cm-variable">width</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">height</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">offset</span> <span class="cm-operator">=</span> <span class="cm-number">20</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">217</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">oldColor</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>(), <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">newColor</span> <span class="cm-operator">=</span> <span class="cm-variable">QString</span>());</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">218</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">219</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//初始化数据库</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">220</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initDb</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">dbName</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">221</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//初始化文件,不存在则拷贝</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">222</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initFile</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">sourceName</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">targetName</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">223</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//检查ini配置文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">224</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">checkIniFile</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">iniFile</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">225</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">226</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置图标到按钮</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">227</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setIconBtn</span>(<span class="cm-variable">QAbstractButton</span> <span class="cm-operator">*</span><span class="cm-variable">btn</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">png</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">icon</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">228</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">229</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//写入消息到额外的的消息日志文件</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">230</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">writeInfo</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">needWrite</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">filePath</span> <span class="cm-operator">=</span> <span class="cm-string">"log"</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">231</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">writeError</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">info</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">needWrite</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">filePath</span> <span class="cm-operator">=</span> <span class="cm-string">"log"</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">232</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">233</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置系统时间</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">234</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">setSystemDateTime</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">year</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">month</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">day</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">235</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">hour</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">min</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">sec</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">236</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//设置开机自启动</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">237</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">runWithSystem</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">name</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">path</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">autoRun</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">238</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">239</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取内置颜色集合</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">240</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QList</span><span class="cm-operator">&lt;</span><span class="cm-variable">QColor</span><span class="cm-operator">&gt;</span> <span class="cm-variable">getColorList</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">241</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QStringList</span> <span class="cm-variable">getColorNames</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">242</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//随机获取颜色集合中的颜色</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">243</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QColor</span> <span class="cm-variable">getRandColor</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">244</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">245</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//初始化随机数种子</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">246</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initRand</span>();</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">247</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取随机小数</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">248</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">float</span> <span class="cm-variable">getRandFloat</span>(<span class="cm-variable-3">float</span> <span class="cm-variable">min</span>, <span class="cm-variable-3">float</span> <span class="cm-variable">max</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">249</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取随机数,指定最小值和最大值</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">250</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">double</span> <span class="cm-variable">getRandValue</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">min</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">max</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">contansMin</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">contansMax</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">251</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//获取范围值随机经纬度集合</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">252</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QStringList</span> <span class="cm-variable">getRandPoint</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">count</span>, <span class="cm-variable-3">float</span> <span class="cm-variable">mainLng</span>, <span class="cm-variable-3">float</span> <span class="cm-variable">mainLat</span>, <span class="cm-variable-3">float</span> <span class="cm-variable">dotLng</span>, <span class="cm-variable-3">float</span> <span class="cm-variable">dotLat</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">253</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">254</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//初始化表格</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">255</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">initTableView</span>(<span class="cm-variable">QTableView</span> <span class="cm-operator">*</span><span class="cm-variable">tableView</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">rowHeight</span> <span class="cm-operator">=</span> <span class="cm-number">25</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">256</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">bool</span> <span class="cm-variable">headVisible</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">edit</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">257</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="cm-variable-3">bool</span> <span class="cm-variable">stretchLast</span> <span class="cm-operator">=</span> <span class="cm-atom">true</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">258</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//打开文件带提示框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">259</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">void</span> <span class="cm-variable">openFile</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">fileName</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">msg</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">260</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//导出和打印数据提示框</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">261</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable-3">bool</span> <span class="cm-variable">checkRowCount</span>(<span class="cm-variable-3">int</span> <span class="cm-variable">rowCount</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">maxCount</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">warnCount</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">262</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">263</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//插入消息</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">264</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">appendMsg</span>(<span class="cm-variable">QTextEdit</span> <span class="cm-operator">*</span><span class="cm-variable">textEdit</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">type</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">data</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">265</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">int</span> <span class="cm-variable">maxCount</span>, <span class="cm-variable-3">int</span> <span class="cm-operator">&amp;</span><span class="cm-variable">currentCount</span>,</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">266</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="cm-variable-3">bool</span> <span class="cm-variable">clear</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>, <span class="cm-variable-3">bool</span> <span class="cm-variable">pause</span> <span class="cm-operator">=</span> <span class="cm-atom">false</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">267</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-comment">//首尾截断字符串显示</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">268</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> &nbsp; &nbsp;<span class="cm-keyword">static</span> <span class="cm-variable">QString</span> <span class="cm-variable">cutString</span>(<span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">text</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">len</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">left</span>, <span class="cm-variable-3">int</span> <span class="cm-variable">right</span>, <span class="cm-keyword">const</span> <span class="cm-variable">QString</span> <span class="cm-operator">&amp;</span><span class="cm-variable">mid</span> <span class="cm-operator">=</span> <span class="cm-string">"..."</span>);</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 0px; width: 36px;">269</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">};</span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">270</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="" cm-zwsp="">
</span></span></pre></div><div style="position: relative;"><div class="CodeMirror-gutter-wrapper" style="left: -45px;"><div class="CodeMirror-linenumber CodeMirror-gutter-elt CodeMirror-linenumber-show" style="left: 0px; width: 36px;">271</div></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-meta">#endif </span><span class="cm-comment">// QTHELPER_H</span></span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 6404px;"></div><div class="CodeMirror-gutters" style="height: 6404px;"><div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 44px;"></div></div></div></div></pre><h4 id='443-初始化及辅助'><span>4.4.3 初始化及辅助</span></h4><p><span> </span><img src="snap/4-4-3.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>appconfig</span></td><td style='text-align:left;' ><span>配置参数类，整个系统的配置参数存放在ini文件中，跨平台，所有参数都对应一个变量，读取配置参数的时候将值赋值给变量，写入的时候将变量值写入到配置文件。</span></td></tr><tr><td style='text-align:left;' ><span>appfun</span></td><td style='text-align:left;' ><span>辅助函数类，比如重启，获取随机数、从多个数组中取出最大值等。</span></td></tr><tr><td style='text-align:left;' ><span>appinit</span></td><td style='text-align:left;' ><span>程序初始化类，在main函数中，会先执行这个初始化的类，比如初始化皮肤、字体、数据库、样式等操作，这些都是要优先在窗体加载前执行的，执行完毕以后再打开窗体主界面。</span></td></tr><tr><td style='text-align:left;' ><span>appkey</span></td><td style='text-align:left;' ><span>通用秘钥管理类。</span></td></tr></tbody></table></figure><h4 id='444-自定义控件'><span>4.4.4 自定义控件</span></h4><p><span> </span><img src="snap/4-4-4.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>customchart</span></td><td style='text-align:left;' ><span>自定义图表控件</span></td></tr><tr><td style='text-align:left;' ><span>custompie</span></td><td style='text-align:left;' ><span>自定义饼状图，纯painter绘制，弥补qchart组件不支持qt4等版本。</span></td></tr><tr><td style='text-align:left;' ><span>customtitlebar</span></td><td style='text-align:left;' ><span>自定义模块标题栏</span></td></tr><tr><td style='text-align:left;' ><span>gaugepercent</span></td><td style='text-align:left;' ><span>百分比仪表盘</span></td></tr><tr><td style='text-align:left;' ><span>gaugespeed</span></td><td style='text-align:left;' ><span>速度仪表盘</span></td></tr><tr><td style='text-align:left;' ><span>progressring</span></td><td style='text-align:left;' ><span>环形进度条</span></td></tr><tr><td style='text-align:left;' ><span>progressthree</span></td><td style='text-align:left;' ><span>三态进度条</span></td></tr><tr><td style='text-align:left;' ><span>switchbutton</span></td><td style='text-align:left;' ><span>开关按钮</span></td></tr></tbody></table></figure><p><span> </span><img src="snap/4-4-4-1.jpg" referrerpolicy="no-referrer"><span> </span>
<span> </span><img src="snap/4-4-4-2.jpg" referrerpolicy="no-referrer"><span> </span>
<span> </span><img src="snap/4-4-4-3.jpg" referrerpolicy="no-referrer"><span> </span>
<span> </span><img src="snap/4-4-4-4.jpg" referrerpolicy="no-referrer">
<span> </span><img src="snap/4-4-4-5.jpg" referrerpolicy="no-referrer"><span> </span>
<span> </span><img src="snap/4-4-4-6.jpg" referrerpolicy="no-referrer"><span> </span>
<span> </span><img src="snap/4-4-4-7.jpg" referrerpolicy="no-referrer">
<span> </span><img src="snap/4-4-4-8.jpg" referrerpolicy="no-referrer"><span> </span></p><h3 id='45-内核模块'><span>4.5 内核模块</span></h3><h4 id='451-通用自定义控件'><span>4.5.1 通用自定义控件</span></h4><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>bottomwidget</span></td><td style='text-align:left;' ><span>通用底部状态栏控件，可以设置软件名称、版本号、运行时间等。</span></td></tr><tr><td style='text-align:left;' ><span>colorcombobox</span></td><td style='text-align:left;' ><span>颜色下拉框控件，在系统设置中有。</span></td></tr><tr><td style='text-align:left;' ><span>cpumemorylabel</span></td><td style='text-align:left;' ><span>CPU和内存使用情况标签控件，主界面右上角显示。</span></td></tr><tr><td style='text-align:left;' ><span>customtitlebar</span></td><td style='text-align:left;' ><span>停靠窗体自定义标题栏控件。</span></td></tr><tr><td style='text-align:left;' ><span>devicebutton</span></td><td style='text-align:left;' ><span>设备按钮控件，比如图片地图模块中用到，可设置不同的图标样式和状态等，双击发出信号进行相应处理比如弹出对应视频预览等。</span></td></tr><tr><td style='text-align:left;' ><span>framelesswidget</span></td><td style='text-align:left;' ><span>无边框窗体管理类，无边框拖动+拉伸，主界面就用到了这个类。</span></td></tr><tr><td style='text-align:left;' ><span>lcddatetime</span></td><td style='text-align:left;' ><span>软件右上角显示时间的控件。</span></td></tr><tr><td style='text-align:left;' ><span>panelwidget</span></td><td style='text-align:left;' ><span>面板容器控件，主界面子模块表格消息，就用到此控件，用于将一堆widget放到此容器进行管理，自动形成滚动条等。</span></td></tr><tr><td style='text-align:left;' ><span>switchbutton</span></td><td style='text-align:left;' ><span>开关按钮控件，在系统设置中存在大量该控件。</span></td></tr><tr><td style='text-align:left;' ><span>xslider</span></td><td style='text-align:left;' ><span>滑动条控件，在原有滑动条基础上增加了鼠标按下立即定位等。</span></td></tr></tbody></table></figure><h4 id='452-图表组件内核'><span>4.5.2 图表组件内核</span></h4><p><span> </span><img src="snap/4-5-2.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>customplot</span></td><td style='text-align:left;' ><span>自定义图表组件类。</span></td></tr><tr><td style='text-align:left;' ><span>customplotbarh</span></td><td style='text-align:left;' ><span>自定义形状-横向柱状图。</span></td></tr><tr><td style='text-align:left;' ><span>customplotbarv</span></td><td style='text-align:left;' ><span>自定义形状-垂直柱状图。</span></td></tr><tr><td style='text-align:left;' ><span>customplothead</span></td><td style='text-align:left;' ><span>当前组件通用头文件。</span></td></tr><tr><td style='text-align:left;' ><span>customplothelper</span></td><td style='text-align:left;' ><span>当前组件通用辅助函数文件。</span></td></tr><tr><td style='text-align:left;' ><span>customplotline</span></td><td style='text-align:left;' ><span>自定义形状-平滑曲线图。</span></td></tr><tr><td style='text-align:left;' ><span>customplottracer</span></td><td style='text-align:left;' ><span>自定义图层绘制十字线，也叫游标，定位线。</span></td></tr><tr><td style='text-align:left;' ><span>smoothcurve</span></td><td style='text-align:left;' ><span>平滑曲线算法类，内置多种平滑算法，可以自行增加其他算法。</span></td></tr></tbody></table></figure><h4 id='453-数据库应用内核'><span>4.5.3 数据库应用内核</span></h4><p><span> </span><img src="snap/4-5-3.jpg" referrerpolicy="no-referrer"></p><p><span>本系统只用到了该类库中的dbconnthread、dbhttpthread。</span>
<span>dbconnthread：封装的一个通用的数据库通信类，支持sqlite、mysql、PostgreSQL等数据库，功能包括了数据库的打开和关闭，线程执行sql语句队列信号发出执行结果等，支持重连。</span>
<span>dbhttpthread：本系统除了支持数据库采集模式以外，还支持发送http网络请求的方式来采集数据，请求中带对应要查询的表，字段等信息，这个类就是专门的请求类，请求结果自动过滤运算并信号发出去，返回数据的信号和数据库采集的信号完全一致，使得主界面关联到同一个槽函数就能正常工作。</span></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>dbcleanthread</span></td><td style='text-align:left;' ><span>自动清理数据线程类。</span></td></tr><tr><td style='text-align:left;' ><span>dbconnthread</span></td><td style='text-align:left;' ><span>数据库通信管理线程类。</span></td></tr><tr><td style='text-align:left;' ><span>dbdelegate</span></td><td style='text-align:left;' ><span>自定义委托全家桶，包括复选框、下拉框、密码框、按钮等。</span></td></tr><tr><td style='text-align:left;' ><span>dbhead</span></td><td style='text-align:left;' ><span>当前组件通用头文件。</span></td></tr><tr><td style='text-align:left;' ><span>dbhelper</span></td><td style='text-align:left;' ><span>各种数据库应用函数封装，比如初始化数据库、执行sql语句等。</span></td></tr><tr><td style='text-align:left;' ><span>dbhttpthread</span></td><td style='text-align:left;' ><span>网络请求数据采集类。</span></td></tr><tr><td style='text-align:left;' ><span>dbpage</span></td><td style='text-align:left;' ><span>数据库通用翻页类。</span></td></tr><tr><td style='text-align:left;' ><span>dbpagemodel</span></td><td style='text-align:left;' ><span>数据库翻页类数据模型。</span></td></tr><tr><td style='text-align:left;' ><span>navpage</span></td><td style='text-align:left;' ><span>分页导航控件。</span></td></tr></tbody></table></figure><h4 id='454-大屏地图内核'><span>4.5.4 大屏地图内核</span></h4><p><span> </span><img src="snap/4-5-4.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>echartjs</span></td><td style='text-align:left;' ><span>echart模块中用到的json文件转js文件，获取js文件中的名字和经纬度等处理。</span></td></tr><tr><td style='text-align:left;' ><span>echarts</span></td><td style='text-align:left;' ><span>echart封装类，可加载仪表盘、闪烁点图、迁徙图、世界地图、区域地图等，每个点可自定义颜色和提示信息等。</span></td></tr><tr><td style='text-align:left;' ><span>mapbaidu</span></td><td style='text-align:left;' ><span>百度地图封装类，支持在线和离线两种模式。</span></td></tr></tbody></table></figure><h4 id='455-视频监控内核'><span>4.5.5 视频监控内核</span></h4><p><span> </span><img src="snap/4-5-5.jpg" referrerpolicy="no-referrer">
<span>视频组件继承和依赖关系说明：</span></p><ol start='' ><li><p><span>videobase是基类组件，video是视频播放组件，依赖基类组件，videoffmpeg是具体的内核实现组件，依赖视频播放组件。</span></p></li><li><p><span>video组件中的videothread解码线程类继承自videobase基类组件中的abstractvideothread。</span></p></li><li><p><span>video组件中的videowidgetx视频显示类继承自videobase基类组件中的abstractvideowidget。</span></p></li><li><p><span>videoffmpeg组件中的ffmpegthread继承自video组件中的videothread。</span></p></li><li><p><span>videoffmpeg组件中的ffmpegsave继承自videobase组件中的abstractsavethread。</span></p></li><li><p><span>按照此规则还有其他内核比如vlc组件中的vlcthread也是继承自videothread，mpv组件中的mpvthread也是继承自videothread。这样新增一种内核只要具体实现部分处理函数即可应用整个视频框架。</span></p></li><li><p><span>通过多层基类继承关系，使得动态挂载任意解码内核极为方便。</span></p></li><li><p><span>为何在video视频组件的基础上还要提炼一个videobase基类组件？因为该基类组件还可以提供给camera本地摄像头采集组件使用，基类中的变量、函数、处理逻辑几乎一致，但是又有特殊性，所以需要分开再提炼出videobase基类。</span></p></li></ol><h5 id='4551-视频播放组件'><span>4.5.5.1 视频播放组件</span></h5><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>videobox</span></td><td style='text-align:left;' ><span>监控画面切换控件，将所有通道切换处理全部集中到一个类，通用异形布局切换函数，可以参考进行自定义异形布局，通道布局切换发出信号通知，支持自定义子菜单布局内容。</span></td></tr><tr><td style='text-align:left;' ><span>videohelper</span></td><td style='text-align:left;' ><span>视频相关辅助函数，比如根据url地址取出ip地址、校验网络地址是否可达、检查地址是否正常、根据地址获取本地摄像头参数、获取本地桌面采集参数、创建视频采集类、对采集线程设置参数等。</span></td></tr><tr><td style='text-align:left;' ><span>videoutil</span></td><td style='text-align:left;' ><span>视频相关辅助函数，加载视频内核、视频地址、视频模式、解码策略、编码策略、硬件加速、通信协议、缓存时间、读取超时等。</span></td></tr><tr><td style='text-align:left;' ><span>videomanage</span></td><td style='text-align:left;' ><span>视频线程管理类，全局单例，将所有视频控件发给此类管理，负责挨个打开视频、应用录像计划等。</span></td></tr><tr><td style='text-align:left;' ><span>videoplayback</span></td><td style='text-align:left;' ><span>视频回放控件，支持多个通道，显示每个通道对应的视频段。</span></td></tr><tr><td style='text-align:left;' ><span>videostruct</span></td><td style='text-align:left;' ><span>视频播放组件结构体定义类，包括解析内核枚举值、视频类型枚举值、解码策略枚举值、视频采集参数结构体。</span></td></tr><tr><td style='text-align:left;' ><span>videotask</span></td><td style='text-align:left;' ><span>视频任务线程类，全局单例，可以随时插入一些视频相关的任务进行处理，比如vlc录制视频后需要重命名文件，mpv内核关闭视频后鼠标指针打圈圈需要复位。</span></td></tr><tr><td style='text-align:left;' ><span>videothread</span></td><td style='text-align:left;' ><span>视频解码线程类，内置了共享解码线程处理逻辑，可以打开视频、关闭视频、设置视频宽高比例、获取文件总时长、获取媒体信息、获取和设置播放位置、获取和设置播放速度、获取和设置音量大小、获取和设置静音状态等。</span></td></tr><tr><td style='text-align:left;' ><span>videourl</span></td><td style='text-align:left;' ><span>视频地址相关静态函数，可以读取和写入地址到文本文件，用作历史记录，内置了各种类型（rtsp、http、音频文件、视频文件、网络文件、本地摄像头）的测试音视频地址集合。</span></td></tr><tr><td style='text-align:left;' ><span>videowidgetx</span></td><td style='text-align:left;' ><span>视频播放控件，一个控件对应一个解码线程，提供播放成功、播放结束、收到截图、工具栏按钮单击等处理，提供开始播放、停止播放、暂停播放、继续播放、抓拍截图、开始录制、暂停录制、停止录制等接口。</span></td></tr></tbody></table></figure><h5 id='4552-视频基类组件'><span>4.5.5.2 视频基类组件</span></h5><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>abstractsavethread</span></td><td style='text-align:left;' ><span>音视频存储基类，可以设置需要保存的音视频文件类型，比如音频文件类型有pcm、wav、aac，视频文件类型有yuv、h264、mp4，提供开始保存、暂停保存、停止保存等接口。</span></td></tr><tr><td style='text-align:left;' ><span>abstractvideosurface</span></td><td style='text-align:left;' ><span>视频回调基类，用于Qt中的QCamera和QMedia类播放后拿到回调视频数据，这样可以取到一张张图片。</span></td></tr><tr><td style='text-align:left;' ><span>abstractvideothread</span></td><td style='text-align:left;' ><span>视频解码线程基类，摄像头采集线程和视频采集线程都继承自此类，将各种公用的变量、函数、接口、信号槽全部放在基类，包括了停止线程标志位、打开是否成功标志位、暂停采集标志位、开始截图标志位、正在录制标志位，提供了虚函数开始播放、停止播放、暂停播放、继续播放、抓拍截图、截图完成、开始录制、暂停录制、停止录制等，提供写入视频数据到文件、写入音频数据到文件槽函数。</span></td></tr><tr><td style='text-align:left;' ><span>abstractvideowidget</span></td><td style='text-align:left;' ><span>视频显示控件基类，</span></td></tr><tr><td style='text-align:left;' ><span>audioplayer</span></td><td style='text-align:left;' ><span>音频播放类，空的，纯粹为了在没有Qt音频播放类QAudioOutput的时候使用，有些Qt版本或者嵌入式板子环境未必有这个类，但是又不能影响整个组件的运行，于是定义了空的类，函数正常调用但是不做任何处理。</span></td></tr><tr><td style='text-align:left;' ><span>bannerwidget</span></td><td style='text-align:left;' ><span>悬浮工具栏控件，可以设置各种颜色、按钮图标集合、按钮名称集合、按钮提示信息集合等，悬浮条位置支持上下左右四个方位。</span></td></tr><tr><td style='text-align:left;' ><span>filterhelper</span></td><td style='text-align:left;' ><span>滤镜相关辅助类，传入旋转角度获取旋转滤镜字符串、根据标签信息获取对应滤镜字符串、根据图形信息获取对应滤镜字符串、转换滤镜字符串到ffmpeg格式、传入标签队列和图形队列获取滤镜字符串。此类主要给ffmpeg内核、qtav内核、mdk内核使用。</span></td></tr><tr><td style='text-align:left;' ><span>urlhelper</span></td><td style='text-align:left;' ><span>通用地址辅助类，设备厂家类型结构体、地址参数结构体，各个厂家的实时及回放视频流字符串函数，根据url播放地址获取地址对应的各种信息比如IP地址和端口等。</span></td></tr><tr><td style='text-align:left;' ><span>imagelabel</span></td><td style='text-align:left;' ><span>图片标签控件，多线程绘制传入的图片，性能比setpixmap更优。</span></td></tr><tr><td style='text-align:left;' ><span>widgethelper</span></td><td style='text-align:left;' ><span>窗体相关辅助函数，包括传入图片尺寸和窗体区域及边框大小返回居中区域(scaleMode: 0-自动调整 1-等比缩放 2-拉伸填充)、绘制矩形区域比如人脸框、绘制点集合多边形路径比如三角形、绘制路径集合、显示截图预览等。</span></td></tr></tbody></table></figure><h5 id='4553-视频解码组件'><span>4.5.5.3 视频解码组件</span></h5><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>ffmpegfilter</span></td><td style='text-align:left;' ><span>滤镜相关静态函数，传入滤镜结构体数据获取滤镜字符串，初始化滤镜、释放滤镜数据。在ffmpegthread中调用。</span></td></tr><tr><td style='text-align:left;' ><span>ffmpeghelper</span></td><td style='text-align:left;' ><span>相关辅助函数，包括打印输出各种信息、打印设备列表和参数、格式枚举值转字符串、视频帧旋转、通用硬解码、通用软解码、通用软编码、释放数据帧数据包、超时回调(包括打开超时和读取超时)等。</span></td></tr><tr><td style='text-align:left;' ><span>ffmpegsave</span></td><td style='text-align:left;' ><span>视频存储类，用于保存h264和mp4文件，同时也可用于推流。</span></td></tr><tr><td style='text-align:left;' ><span>ffmpegsync</span></td><td style='text-align:left;' ><span>音视频同步线程类，解码后的音视频数据发给本类进行时间同步处理，采用的外部时钟同步策略。音视频播放的进度也在本类中。</span></td></tr><tr><td style='text-align:left;' ><span>ffmpegthread</span></td><td style='text-align:left;' ><span>视频解码线程核心，从打开地址、分配解码器、初始化参数、取出音视频数据解码、关闭并释放资源等都在本类实现。</span></td></tr><tr><td style='text-align:left;' ><span>ffmpegutil</span></td><td style='text-align:left;' ><span>辅助函数，比如打印输出编码解码信息、打印编码器的相关参数、打印设备列表和参数、获取输入输出设备名称集合、视频帧旋转等。</span></td></tr></tbody></table></figure><h5 id='4554-视频绘制组件'><span>4.5.5.4 视频绘制组件</span></h5><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>openglinclude</span></td><td style='text-align:left;' ><span>当前组件头文件。</span></td></tr><tr><td style='text-align:left;' ><span>nv12glwidget</span></td><td style='text-align:left;' ><span>空类，用于没有opengl的Qt版本中保证程序能够继续运行。</span></td></tr><tr><td style='text-align:left;' ><span>nv12openglwidget</span></td><td style='text-align:left;' ><span>继承自QOpenGLWidget的NV12格式OPENGL绘制窗体。</span></td></tr><tr><td style='text-align:left;' ><span>yuvglwidget</span></td><td style='text-align:left;' ><span>空类，用于没有opengl的Qt版本中保证程序能够继续运行。</span></td></tr><tr><td style='text-align:left;' ><span>yuvopenglwidget</span></td><td style='text-align:left;' ><span>继承自QOpenGLWidget的YUV格式OPENGL绘制窗体。</span></td></tr></tbody></table></figure><h4 id='456-通用浏览器内核'><span>4.5.6 通用浏览器内核</span></h4><p><span> </span><img src="snap/4-5-6.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>webcore.pri</span></td><td style='text-align:left;' ><span>通用的根据不同的Qt版本、不同的编译器环境、不同的操作系统，加载对应的浏览器内核模块和定义不同的变量。</span></td></tr><tr><td style='text-align:left;' ><span>miniblink</span></td><td style='text-align:left;' ><span>miniblink封装处理类。</span></td></tr><tr><td style='text-align:left;' ><span>webhelper</span></td><td style='text-align:left;' ><span>经纬度转换、获取小数点经纬度值等常用处理函数。</span></td></tr><tr><td style='text-align:left;' ><span>webjsdata</span></td><td style='text-align:left;' ><span>通用的浏览器控件和Qt程序交互数据中转类。</span></td></tr><tr><td style='text-align:left;' ><span>webview</span></td><td style='text-align:left;' ><span>通用浏览器控件，支持webkit、webengine、miniblink。</span></td></tr></tbody></table></figure><h3 id='46-界面模块'><span>4.6 界面模块</span></h3><h4 id='461-大屏控件演示'><span>4.6.1 大屏控件演示</span></h4><p><span> </span><img src="snap/4-6-1.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>frmcontrol</span></td><td style='text-align:left;' ><span>大屏控件演示主界面，负责加载所有控件演示子窗体。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotarea</span></td><td style='text-align:left;' ><span>曲线面积图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotbarh</span></td><td style='text-align:left;' ><span>横向柱状图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotbarhs</span></td><td style='text-align:left;' ><span>横向分组图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotbars</span></td><td style='text-align:left;' ><span>柱状堆积图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotbarv</span></td><td style='text-align:left;' ><span>标准柱状图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotbarvs</span></td><td style='text-align:left;' ><span>柱状分组图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotdata</span></td><td style='text-align:left;' ><span>数据转曲线。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotnormal</span></td><td style='text-align:left;' ><span>标准曲线图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotsin</span></td><td style='text-align:left;' ><span>模拟曲线图。</span></td></tr><tr><td style='text-align:left;' ><span>frmplotsmooth</span></td><td style='text-align:left;' ><span>平滑曲线图。</span></td></tr></tbody></table></figure><h4 id='462-大屏模块演示'><span>4.6.2 大屏模块演示</span></h4><p><span> </span><img src="snap/4-6-2.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>frmmodule</span></td><td style='text-align:left;' ><span>大屏子模块演示主界面，负责加载所有子模块界面。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule1</span></td><td style='text-align:left;' ><span>年度产量汇总。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule2</span></td><td style='text-align:left;' ><span>当月计划达成率。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule3</span></td><td style='text-align:left;' ><span>设备监控。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule4</span></td><td style='text-align:left;' ><span>模具进度。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule5</span></td><td style='text-align:left;' ><span>负荷分布。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule6</span></td><td style='text-align:left;' ><span>送检一次合格率。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule7</span></td><td style='text-align:left;' ><span>品质管理。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule8</span></td><td style='text-align:left;' ><span>物料管理。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodule9</span></td><td style='text-align:left;' ><span>备用模块。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodulecenter</span></td><td style='text-align:left;' ><span>中心窗体。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodulemap</span></td><td style='text-align:left;' ><span>大屏地图。</span></td></tr><tr><td style='text-align:left;' ><span>frmmodulevideo</span></td><td style='text-align:left;' ><span>视频监控。</span></td></tr></tbody></table></figure><h4 id='463-主界面模块'><span>4.6.3 主界面模块</span></h4><p><span> </span><img src="snap/4-6-3.jpg" referrerpolicy="no-referrer"></p><figure class='table-figure'><table><thead><tr><th style='text-align:left;' ><span>名称</span></th><th style='text-align:left;' ><span>说明</span></th></tr></thead><tbody><tr><td style='text-align:left;' ><span>frmdevice</span></td><td style='text-align:left;' ><span>设备面板界面。</span></td></tr><tr><td style='text-align:left;' ><span>frmmain</span></td><td style='text-align:left;' ><span>大屏主界面。</span></td></tr><tr><td style='text-align:left;' ><span>frmmain2</span></td><td style='text-align:left;' ><span>以特定分辨率设置的大屏主界面用于截图。</span></td></tr></tbody></table></figure><h2 id='5-效果图'><span>5 效果图</span></h2><h3 id='51-布局方案'><span>5.1 布局方案</span></h3><h4 id='511-自定义布局1'><span>5.1.1 自定义布局1</span></h4><p><span> </span><img src="snap/5-1-1.jpg" referrerpolicy="no-referrer"></p><h4 id='512-自定义布局2'><span>5.1.2 自定义布局2</span></h4><p><span> </span><img src="snap/5-1-2.jpg" referrerpolicy="no-referrer"></p><h4 id='513-自定义布局3'><span>5.1.3 自定义布局3</span></h4><p><span> </span><img src="snap/5-1-3.jpg" referrerpolicy="no-referrer"></p><h4 id='514-自定义布局4'><span>5.1.4 自定义布局4</span></h4><p><span> </span><img src="snap/5-1-4.jpg" referrerpolicy="no-referrer"></p><h4 id='515-自定义布局5'><span>5.1.5 自定义布局5</span></h4><p><span> </span><img src="snap/5-1-5.jpg" referrerpolicy="no-referrer"></p><h4 id='516-自定义布局6'><span>5.1.6 自定义布局6</span></h4><p><span> </span><img src="snap/5-1-6.jpg" referrerpolicy="no-referrer"></p><h4 id='517-自定义布局7'><span>5.1.7 自定义布局7</span></h4><p><span> </span><img src="snap/5-1-7.jpg" referrerpolicy="no-referrer"></p><h4 id='518-自定义布局8'><span>5.1.8 自定义布局8</span></h4><p><span> </span><img src="snap/5-1-8.jpg" referrerpolicy="no-referrer"></p><h3 id='52-配色方案'><span>5.2 配色方案</span></h3><h4 id='521-紫色风格'><span>5.2.1 紫色风格</span></h4><p><span> </span><img src="snap/5-2-1.jpg" referrerpolicy="no-referrer"></p><h4 id='522-蓝色风格'><span>5.2.2 蓝色风格</span></h4><p><span> </span><img src="snap/5-2-2.jpg" referrerpolicy="no-referrer"></p><h4 id='523-深蓝风格'><span>5.2.3 深蓝风格</span></h4><p><span> </span><img src="snap/5-2-3.jpg" referrerpolicy="no-referrer"></p><h4 id='524-黑色风格'><span>5.2.4 黑色风格</span></h4><p><span> </span><img src="snap/5-2-4.jpg" referrerpolicy="no-referrer"></p><h3 id='53-模块效果图'><span>5.3 模块效果图</span></h3><h4 id='531-产量汇总'><span>5.3.1 产量汇总</span></h4><p><span> </span><img src="snap/5-3-1.jpg" referrerpolicy="no-referrer"></p><h4 id='532-当月计划'><span>5.3.2 当月计划</span></h4><p><span> </span><img src="snap/5-3-2.jpg" referrerpolicy="no-referrer"></p><h4 id='533-设备监控'><span>5.3.3 设备监控</span></h4><p><span> </span><img src="snap/5-3-3.jpg" referrerpolicy="no-referrer"></p><h4 id='534-模具进度'><span>5.3.4 模具进度</span></h4><p><span> </span><img src="snap/5-3-4.jpg" referrerpolicy="no-referrer"></p><h4 id='535-负荷分布'><span>5.3.5 负荷分布</span></h4><p><span> </span><img src="snap/5-3-5.jpg" referrerpolicy="no-referrer"></p><h4 id='536-送检合格'><span>5.3.6 送检合格</span></h4><p><span> </span><img src="snap/5-3-6.jpg" referrerpolicy="no-referrer"></p><h4 id='537-品质管理'><span>5.3.7 品质管理</span></h4><p><span> </span><img src="snap/5-3-7.jpg" referrerpolicy="no-referrer"></p><h4 id='538-物料管理'><span>5.3.8 物料管理</span></h4><p><span> </span><img src="snap/5-3-8.jpg" referrerpolicy="no-referrer"></p><h4 id='539-视频监控'><span>5.3.9 视频监控</span></h4><p><span> </span><img src="snap/5-3-9.jpg" referrerpolicy="no-referrer"></p><h4 id='5310-大屏地图'><span>5.3.10 大屏地图</span></h4><h5 id='53101闪烁效果'><span>5.3.10.1闪烁效果</span></h5><p><span> </span><img src="snap/5-3-10-1.jpg" referrerpolicy="no-referrer"></p><h5 id='53102-迁徙效果'><span>5.3.10.2 迁徙效果</span></h5><p><span> </span><img src="snap/5-3-10-2.jpg" referrerpolicy="no-referrer"></p><h5 id='53103-世界地图'><span>5.3.10.3 世界地图</span></h5><p><span> </span><img src="snap/5-3-10-3.jpg" referrerpolicy="no-referrer"></p><h5 id='53104-区域地图'><span>5.3.10.4 区域地图</span></h5><p><span> </span><img src="snap/5-3-10-4.jpg" referrerpolicy="no-referrer"></p><h4 id='5311-系统设置'><span>5.3.11 系统设置</span></h4><p><span> </span><img src="snap/5-3-11.jpg" referrerpolicy="no-referrer"></p><h3 id='54-控件效果图'><span>5.4 控件效果图</span></h3><h4 id='541-标准曲线'><span>5.4.1 标准曲线</span></h4><p><span> </span><img src="snap/5-4-1.jpg" referrerpolicy="no-referrer"></p><h4 id='542-曲线面积'><span>5.4.2 曲线面积</span></h4><p><span> </span><img src="snap/5-4-2.jpg" referrerpolicy="no-referrer"></p><h4 id='543-模拟曲线'><span>5.4.3 模拟曲线</span></h4><p><span> </span><img src="snap/5-4-3.jpg" referrerpolicy="no-referrer"></p><h4 id='544-标准柱状'><span>5.4.4 标准柱状</span></h4><p><span> </span><img src="snap/5-4-4.jpg" referrerpolicy="no-referrer"></p><h4 id='545-柱状堆积'><span>5.4.5 柱状堆积</span></h4><p><span> </span><img src="snap/5-4-5.jpg" referrerpolicy="no-referrer"></p><h4 id='546-柱状分组'><span>5.4.6 柱状分组</span></h4><p><span> </span><img src="snap/5-4-6.jpg" referrerpolicy="no-referrer"></p><h4 id='547-横向柱状'><span>5.4.7 横向柱状</span></h4><p><span> </span><img src="snap/5-4-7.jpg" referrerpolicy="no-referrer"></p><h4 id='548-横向分组'><span>5.4.8 横向分组</span></h4><p><span> </span><img src="snap/5-4-8.jpg" referrerpolicy="no-referrer"></p><h4 id='549-数据曲线'><span>5.4.9 数据曲线</span></h4><p><span> </span><img src="snap/5-4-9.jpg" referrerpolicy="no-referrer"></p><h4 id='5410-平滑曲线'><span>5.4.10 平滑曲线</span></h4><p><span> </span><img src="snap/5-4-10.jpg" referrerpolicy="no-referrer"></p><h4 id='5411-多坐标轴'><span>5.4.11 多坐标轴</span></h4><p><span> </span><img src="snap/5-4-11.jpg" referrerpolicy="no-referrer"></p><h4 id='5412-多曲线图'><span>5.4.12 多曲线图</span></h4><p><span> </span><img src="snap/5-4-12.jpg" referrerpolicy="no-referrer"></p><h3 id='55-数据库效果图'><span>5.5 数据库效果图</span></h3><h4 id='551-数据库-sqlite'><span>5.5.1 数据库-sqlite</span></h4><p><span> </span><img src="snap/5-5-1.jpg" referrerpolicy="no-referrer"></p><h4 id='552-数据库-mysql'><span>5.5.2 数据库-mysql</span></h4><p><span> </span><img src="snap/5-5-2.jpg" referrerpolicy="no-referrer"></p><h4 id='553-数据库-sqlserver'><span>5.5.3 数据库-sqlserver</span></h4><p><span> </span><img src="snap/5-5-3.jpg" referrerpolicy="no-referrer"></p><h4 id='554-数据库-postgresql'><span>5.5.4 数据库-postgresql</span></h4><p><span> </span><img src="snap/5-5-4.jpg" referrerpolicy="no-referrer"></p><h4 id='555-数据库-oracle'><span>5.5.5 数据库-oracle</span></h4><h4 id='556-数据库-kingbase'><span>5.5.6 数据库-kingbase</span></h4><p><span> </span><img src="snap/5-5-6.jpg" referrerpolicy="no-referrer"></p><p><span>人大金仓数据库-kingbase，其实就是postgresql数据库改的，配置文件都一样，所以可以用连接postgresql数据库的方式进行处理。</span></p><h4 id='557-数据库-远程访问'><span>5.5.7 数据库-远程访问</span></h4><p><span> </span><img src="snap/5-5-7.jpg" referrerpolicy="no-referrer"></p><h4 id='558-数据库-odbc'><span>5.5.8 数据库-odbc</span></h4><p><span> </span><img src="snap/5-5-8.jpg" referrerpolicy="no-referrer"></p><p><span>ODBC连接字符串格式如上图所示。</span></p><h3 id='56-各系统运行图'><span>5.6 各系统运行图</span></h3><h4 id='561-windows-mingw'><span>5.6.1 windows-mingw</span></h4><p><span> </span><img src="snap/5-6-1.jpg" referrerpolicy="no-referrer"></p><h4 id='562-windows-msvc'><span>5.6.2 windows-msvc</span></h4><p><span> </span><img src="snap/5-6-2.jpg" referrerpolicy="no-referrer"></p><h4 id='563-linux-ubuntu'><span>5.6.3 linux-ubuntu</span></h4><p><span> </span><img src="snap/5-6-3.jpg" referrerpolicy="no-referrer"></p><h4 id='564-linux-uos'><span>5.6.4 linux-uos</span></h4><p><span> </span><img src="snap/5-6-4.jpg" referrerpolicy="no-referrer"></p><h4 id='565-linux-kylin'><span>5.6.5 linux-kylin</span></h4><p><span> </span><img src="snap/5-6-5.jpg" referrerpolicy="no-referrer"></p><h4 id='566-linux-neokylin'><span>5.6.6 linux-neokylin</span></h4><p><span> </span><img src="snap/5-6-6.jpg" referrerpolicy="no-referrer"></p><h4 id='567-linux-fedoar'><span>5.6.7 linux-fedoar</span></h4><p><span> </span><img src="snap/5-6-7.jpg" referrerpolicy="no-referrer"></p><h4 id='568-unix-mac'><span>5.6.8 unix-mac</span></h4><p><span> </span><img src="snap/5-6-8.jpg" referrerpolicy="no-referrer"></p></div></div>

<script>(function(){function e(e,n,i){document.addEventListener(e,function(e){if(!e.defaultPrevented)for(var t=e.target;t&&t!=this;t=t.parentNode)if(t.matches(n)){!1===i.call(t,e)&&(e.preventDefault(),e.stopPropagation());break}},!1)}var t=document.body.parentElement,i=[],r=null,o=document.body.classList.contains("typora-export-collapse-outline");function a(){return t.scrollTop}e("click",".outline-expander",function(e){var t=this.closest(".outline-item-wrapper").classList;return t.contains("outline-item-open")?t.remove("outline-item-open"):t.add("outline-item-open"),u(),!1}),e("click",".outline-item",function(e){var t=this.querySelector(".outline-label");location.hash="#"+t.getAttribute("href"),o&&((t=this.closest(".outline-item-wrapper").classList).contains("outline-item-open")||t.add("outline-item-open"),d(),t.add("outline-item-active"))});function s(){var e=a();r=null;for(var t=0;t<i.length&&i[t][1]-e<60;t++)r=i[t]}function n(){c=setTimeout(function(){var n;i=[],n=a(),document.querySelector("#write").querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(e=>{var t=e.getAttribute("id");i.push([t,n+e.getBoundingClientRect().y])}),s(),u()},300)}var l,c,d=function(){document.querySelectorAll(".outline-item-active").forEach(e=>e.classList.remove("outline-item-active")),document.querySelectorAll(".outline-item-single.outline-item-open").forEach(e=>e.classList.remove("outline-item-open"))},u=function(){if(r&&(d(),t=document.querySelector('.outline-label[href="#'+(CSS.escape?CSS.escape(r[0]):r[0])+'"]')))if(o){var e=t.closest(".outline-item-open>ul>.outline-item-wrapper");if(e)e.classList.add("outline-item-active");else{for(var t,n=(t=t.closest(".outline-item-wrapper")).parentElement.closest(".outline-item-wrapper");n;)n=(t=n).parentElement.closest(".outline-item-wrapper");t.classList.add("outline-item-active")}}else t.closest(".outline-item-wrapper").classList.add("outline-item-active")};window.addEventListener("scroll",function(e){l&&clearTimeout(l),l=setTimeout(function(){s(),u()},300)});window.addEventListener("resize",function(e){c&&clearTimeout(c),n()}),n()})();</script></body>
</html>